Tkinter多帧切换界面显示空窗口,关闭时报grid命令应用已销毁是什么原因?
报错原因分析
- 多余的根窗口声明
重构代码头部存在root=tk.Tk()的多余声明,而你自定义的tkinterApp类本身继承自tk.Tk,实例化app = tkinterApp()时会额外创建第二个根窗口,这就是启动后直接弹出两个空白窗口的原因。 - 提前调用事件循环导致应用提前销毁
你在WelcomePage类的__init__方法末尾调用了self.mainloop(),当tkinterApp初始化到创建WelcomePage实例这一步时,会直接启动Tkinter事件循环,阻塞后续所有初始化逻辑。手动关闭弹出的窗口后,事件循环终止、应用实例被销毁,后续执行frame.grid()操作时找不到存活的应用实例,就抛出了你遇到的对应报错。 - 其他影响运行的逻辑问题
- 你在
Registration、Authentication类的初始化方法中直接把Canvas绑定到类名上,且挂载到了多余的root窗口而非当前帧,同时在初始化阶段直接执行密码校验、数据库读写逻辑,完全没有等待用户输入、提交按钮触发的流程,逻辑顺序完全错误。 - 代码中使用了
ttk.Label但没有导入ttk模块,运行时会抛出未定义错误。 - 原本适配控制台输入的业务逻辑没有修改为从图形界面输入框取值的逻辑,直接拿
Entry控件对象而非控件内的输入值做校验,无法正常读取用户输入。
- 你在
内容的提问来源于stack exchange,提问作者Matt N
相关产品推荐
相关产品推荐

