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

使用Tkinter创建窗口类无报错却无显示,请问遗漏了什么?

解决Tkinter窗口不显示的问题

我帮你找到了代码里的两个关键问题,这就是界面完全不显示的核心原因:

  • 第一个错误:入口判断的拼写失误
    你写的if __name__ == 'main__':是错误的,正确格式应该是if __name__ == '__main__':(前后都是双下划线)。这个拼写错误直接导致你的main()函数根本没有被执行。

  • 第二个错误:缺少主事件循环
    Tkinter程序必须调用root.mainloop()来启动事件循环,否则窗口会在创建后立刻退出,你根本来不及看到界面。

另外,如果你想测试第二个窗口Entrypage,还需要触发EntryWin方法——比如加个按钮来调用它,不然第二个窗口不会自动显示。

下面是修正后的完整代码:

from tkinter import Tk, Frame, Toplevel, Button  # 明确导入所需组件

def main():
    root = Tk()
    app = startpage(root)
    root.mainloop()  # 启动Tkinter主事件循环

class startpage:
    def __init__(self, master):
        self.master = master
        self.master.title("Main Page")
        self.master.geometry('1350x750+0+0')
        self.master.config(bg = "blue")
        self.frame = Frame(self.master, bg = 'blue')
        self.frame.pack(fill="both", expand=True)  # 让Frame填满整个窗口
        
        # 添加按钮触发第二个窗口
        self.open_entry_btn = Button(self.frame, text="打开录入页面", command=self.EntryWin, bg="white")
        self.open_entry_btn.pack(pady=20)

    def EntryWin(self):
        self.Entry_win = Toplevel(self.master)
        self.app = Entrypage(self.Entry_win)

class Entrypage:
    def __init__(self, master):
        self.master = master
        self.master.title("Entry Page")
        self.master.geometry('1350x750+0+0')
        self.master.config(bg = "green")
        self.frame = Frame(self.master, bg = 'green')  # 匹配窗口背景色
        self.frame.pack(fill="both", expand=True)

if __name__ == '__main__':  # 修正拼写错误
    main()

我还做了几个小优化:

  1. 明确导入Tkinter组件,避免隐式导入的潜在问题
  2. 给Frame添加fill="both", expand=True,让它填满父窗口,不然背景色只会显示一小块
  3. 让Entrypage的Frame背景色和窗口一致,视觉更协调
  4. 添加触发按钮,方便你测试多窗口切换功能

现在运行修正后的代码,就能看到蓝色主窗口,点击按钮还能打开绿色的录入页面啦。

内容的提问来源于stack exchange,提问作者user3064089

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:32:50