我希望这段代码创建一个弹出错误窗口,该窗口会在 4 秒后自行销毁,但也可以通过按钮关闭。
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 的了解,所以我确信我的学习中存在漏洞。我想我可能需要以某种方式使用执行的主线程来销毁这个窗口,或者创建我自己的自定义小部件。任何帮助表示赞赏。