Tkinter出现双窗口问题求助:未知空白窗口来源排查
解决Tkinter计算器GUI的双窗口问题
双窗口的根源在于你的代码创建了两个Tk实例:
- 你的
CalcGUI类继承自tkinter.Tk,调用super().__init__()时,已经自动创建了一个默认的主窗口(就是那个标题为"tk"的空白窗口)。 - 之后你又手动执行
self.screen = Tk(),再次创建了一个新的Tk实例,这就导致了两个窗口同时出现。
修正方法很简单,直接利用继承来的Tk实例作为主窗口,去掉多余的Tk()创建操作:
修正后的完整代码
import tkinter from tkinter import ttk, Entry class CalcGUI(tkinter.Tk): FONT_MEDIUM = ('Calibre', 7) # 清理重复定义的变量 def __init__(self): super().__init__() # 直接操作当前类实例(继承自Tk),无需新建Tk对象 self.resizable(width=False, height=False) self.title("Calculator") self.geometry("312x321") thm = ttk.Style() thm.theme_use('clam') self.input_field = Entry(self, width=312) self.input_field.grid(column=0, row=0) self.input_field.grid(ipady=5) self.mainloop() # 实例化并运行程序 if __name__ == "__main__": app = CalcGUI()
关键修改点
- 删除
self.screen = Tk(),因为当前的self本身就是一个Tk窗口实例 - 所有原本使用
self.screen的地方替换为self - 调用
self.mainloop()启动事件循环,而非self.screen.mainloop() - 清理了重复定义的
FONT_MEDIUM变量(后面的定义会覆盖前面的,保留一个即可)
内容的提问来源于stack exchange,提问作者Saksham Sharma
相关产品推荐
相关产品推荐

