Tkinter编辑器中的文本保存

3
我访问了这个链接: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 关键字)。


哪一行代码导致了这个错误?请打印整个堆栈跟踪。 - Brionius
另外,在未来,请发布足够完整以运行的代码。这将引发明显的“SyntaxError”,因为没有“except”或“finally”的“try”。(此外,顺便说一句,您真的应该将“open/try/finally/close”转换为“with open”; 您正在查看的示例已经过时...) - abarnert
抱歉,完整的代码真的很冗余。下次我会记住的。 - leonneo
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
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退出后再编写文件。如果你继续往下看同一页,你会看到他们是如何实现的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,