我希望此代码创建一个弹出窗口,它在4秒后破坏自己,但也可以通过按钮关闭。Python关闭Toplevel窗口错误
def error(self):
top = Toplevel()
top.after(4000, lambda: top.destroy())
center_window(300,100, top)
top.title("Error")
Label(top, text="Please enter a valid code", height=3, width=200).pack()
ok = Button(top, text="OK", command=top.destroy)
ok.pack()
ok.bind("<Return>", lambda a: top.destroy())
ok.focus_set()
我已经运行的代码,它工作的时间细90%,除了有时它抛出这个错误:
TypeError: <lambda>() takes exactly 1 argument (0 given)
我已经做了研究,指出它是Tkinters线程。我不确定这是否是我的问题,但当我拿出这行代码:
top.after(4000, lambda: top.destroy())
它似乎工作。如果有人能帮助我,我已经自学了我所了解的python,所以我确信我的学习存在漏洞。我想我可能需要以某种方式使用主执行线程来销毁这个窗口,或者创建我自己的自定义窗口小部件。任何帮助表示赞赏。
这与线程完全没有关系。 Tkinter始终以单线程运行。 –