You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:59:55