Tkinter在编辑器中保存文本

时间:2013-10-18 09:50:02

标签: python tkinter

我去了这里:http://effbot.org/zone/vroom.htm 并尝试了这一点:

filename = raw_input("Filename?")
editor = Text()
editor.pack(fill=Y, expand=1)
editor.config(font="Courier 12")
editor.focus_set()
mainloop()
#save
f = open(filename, "w")
text = str(editor.get(0.0,END))
try:
    f.write(text.rstrip())
    f.write("\n")

但是,我收到了一个错误:

TclError: invalid command name ".40632072L"

我该如何解决这个问题? 我对面向对象编程感到不舒服,所以我更喜欢命令式解决方案(没有任何class个关键字)。

1 个答案:

答案 0 :(得分:3)

问题是,在主循环结束后,您的所有小部件(包括editor)都会被销毁,因此您无法调用editor.get

您要做的是添加一些代码,在主循环运行时将editor的值保存在普通旧字符串中,然后使用该变量。例如:

text=''
def stash(*args):
    global text
    text = str(editor.get(0.0,END))
editor.bind_all('<<Modified>>', stash)

或者,当然,做一件更简单的事情:从GUI中编写文件,而不是在GUI退出之后。如果你再向下看同一页,你会看到他们是如何做到的。