如何在 Tkinter 记事本中添加“保存”、“复制”和“粘贴”?

Posted

技术标签:

【中文标题】如何在 Tkinter 记事本中添加“保存”、“复制”和“粘贴”?【英文标题】:How can I add 'Save', 'Copy', and 'Paste' in Tkinter Notepad? 【发布时间】:2021-04-03 06:44:44 【问题描述】:

我正在学习 (Tkinter)Python。 我想在名为“记事本”的 tkinter 应用程序中添加“保存”、“复制”和“粘贴”功能 这是我的代码:

from tkinter import *
import os


window=Tk()

window.title("Simple Notepad")

def save():
    if t1_value.get() == "":
        t1.insert(END, "Please add text to save it")
    else:
        t1_value.get().save("New-file-1.txt")


t1_value=StringVar()
t1=Text(window)
t1.grid(row=0,column=0,columnspan=6,padx=7,pady=7)

b1=Button(window,text="Close",width=15,command=window.destroy)
b1.grid(row=1,column=0,padx=7,pady=7)

b2=Button(window,text="Copy",width=15)
b2.grid(row=1,column=1,padx=7,pady=7)

b3=Button(window,text="Paste",width=15)
b3.grid(row=1,column=2,padx=7,pady=7)

b4=Button(window,text="Save",width=15,command=save)
b4.grid(row=1,column=3,padx=7,pady=7)

window.mainloop()

上面的“保存”功能不起作用!

请告诉我如何将以上这些功能添加到这个简单的 Tkinter 记事本中!

【问题讨论】:

t1_value.get() 返回一个字符串。字符串没有save 方法。使用open("New-file-1.txt","w").write( t1_value.get() + "\n" ) 我得到一个空文件。我在 txt 文档中没有收到 t1_value.get() 【参考方案1】:

你想让记事本可以加载和保存。对? 我认为使用 writeread with 函数对你来说更好。 首先,您必须检查文件名,然后定义保存和打开功能

filename='mynote.txt'

def open_file():
    if os.path.isfile(filename) :
        with open('mynote.txt', 'r', encoding='utf8') as mynote_read:
            t1.delete('1.0',END) 
            t1.insert(END, mynote_read.read())
            t1.see(END)
def save_file():
    with open('mynote.txt','w',encoding='utf8') as mynote_write:
        mynote_write.write(t1.get('1.0',END))

        t1.delete('1.0',END)
        mynote_write.close()

【讨论】:

我认为您必须确保代码中的文件名。使用此代码,然后告诉我您想知道什么 此代码有效,但我仅限于filename='mynote.txt'。如何打开任何文本文件或以任何名称保存? 啊,这并不难。只需更改文件名。比如filename =Simple_notepad.txt,另外,将代码从with open('mynote.txt', blah blah......)更改为with open(filename, blah blah......)。然后,如果您更改为任何文件名,它仍然有效。 好的,但是复制和粘贴功能呢? 好吧....这就是你的任务。我可以谈谈如何做到这一点。但是你现在不是在学习python吗?然后你必须考虑如何做到这一点并输入。然后,如果您仍然不知道该怎么做。再来问问。对你的学习更有帮助【参考方案2】:

您可以使用 pyperclip 库从剪贴板复制和粘贴。

import pyperclip as cb
.
.
button = tk.Button(root, text='Copy',
                      command=lambda: cb.copy(field['text']))
.
.

【讨论】:

嗨,我收到一个错误,即“字段”未定义。我该如何解决? "field" 我的意思是你的输入字段。在这里你使用 StringVar 所以直接做 cb.copy(t1_value) 我遇到了错误。它无法复制StringVar()``Exception in Tkinter callback pyperclip.PyperclipException: only str, int, float, and bool values can be copied to the clipboard, not StringVar这不是完整的错误,这是错误的主线。

以上是关于如何在 Tkinter 记事本中添加“保存”、“复制”和“粘贴”?的主要内容,如果未能解决你的问题,请参考以下文章

Python|用tkinter实现自定义记事本

如何在 Swift 中保存复选标记?

如何在 Swift 3 中保存 UITableViewCell 附件复选标记的状态

如何在加载了 JSON API 数据的 tableview 单元格中保存复选标记属性?

向不同部分的单元格添加多个复选标记,并将其状态保存在Swift iOS中

Python tkinter 将画布保存为 postscript 并添加到 pdf