能解决这个问题吗?我正在运行此代码,窗口已创建,但在控制台中出现错误消息。我认为问题是"after“循环没有终止,但窗口已经被销毁了。
代码:
import Tkinter as tk
import time
class App():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(text="")
self.label.pack()
self.update_clock()
self.root.mainloop()
def update_clock(self):
now = time.strftime("%H:%M:%S")
self.label.configure(text=now)
self.root.after(1000, self.update_clock)
app=App()控制台中有一条消息:
invalid command name "66120320callit"
while executing
"66120320callit"
("after" script)对于我在第一篇文章中的小信息,我很抱歉。我正在使用Spyder IDE,在spyder控制台中可以看到错误,其中重复运行我的代码。我在python bug跟踪器中找到的关于这个bug的描述是"wait_variable在退出时挂起“
发布于 2020-06-12 13:58:58
背景
我也得到了这些“错误”。它们不是真正的异常,它们只是在运行单元测试时在终端中看到垃圾邮件而感到恼火。
我尝试了很多方法,包括重写tkinter.Tk中的after方法以跟踪任何排队的方法,然后在调用tkinter.Tk.destroy()之前自动调用tkinter.Tk.after_cancel(),@GabrielStaples评论道。
因此,即使在调用destroy()时没有排队的after方法,我也会收到这些错误。
My solution
对我来说起作用的是调用tkinter.Tk.quit()而不是destroy()来销毁窗口。我读到quit()不会阻止mainloop,但它看起来很好。在调用quit()之后,由after排队的任何方法都不会被调用。
也许有人能解释一下我不知道的任何后果
https://stackoverflow.com/questions/26168967
复制相似问题