首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行时命令名无效("after“脚本)

执行时命令名无效("after“脚本)
EN

Stack Overflow用户
提问于 2014-10-03 04:19:06
回答 3查看 10K关注 0票数 8

能解决这个问题吗?我正在运行此代码,窗口已创建,但在控制台中出现错误消息。我认为问题是"after“循环没有终止,但窗口已经被销毁了。

代码:

代码语言:javascript
复制
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()

控制台中有一条消息:

代码语言:javascript
复制
invalid command name "66120320callit"
while executing
"66120320callit"
("after" script)

对于我在第一篇文章中的小信息,我很抱歉。我正在使用Spyder IDE,在spyder控制台中可以看到错误,其中重复运行我的代码。我在python bug跟踪器中找到的关于这个bug的描述是"wait_variable在退出时挂起“

EN

Stack Overflow用户

发布于 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排队的任何方法都不会被调用。

也许有人能解释一下我不知道的任何后果

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26168967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档