Tkinter窗口调用destroy()无法关闭问题求助
问题解决:点击Sign in按钮无法关闭tkinter窗口
你的代码存在两处关键问题,导致无法正常关闭窗口:
- 窗口对象未实例化:
window = tkinter.Tk只是引用了Tk类,没有创建窗口实例。必须调用构造函数tkinter.Tk()才能生成可操作的窗口对象,否则调用destroy()时会因为不是实例而报错。 - 缺少主事件循环:tkinter窗口需要通过
mainloop()启动事件循环,否则窗口根本无法显示,按钮也无法响应点击事件。
另外还有一个代码规范问题:signInButton = tkinter.Button(...).pack() 中pack()方法返回None,如果后续需要对按钮进行修改或操作,会因为变量指向None而失败,建议分开写以保证代码可维护性。
修正后的代码如下:
import random, math, tkinter def main(): # 实例化窗口对象 window = tkinter.Tk() # 先创建按钮对象,再调用pack()布局 signInButton = tkinter.Button( text="Sign in", command=lambda: signIn(window), ) signInButton.pack() # 启动主事件循环 window.mainloop() def signIn(mainWindow): mainWindow.destroy() main()
内容的提问来源于stack exchange,提问作者yashsss
相关产品推荐
相关产品推荐

