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

如何用Tkinter实现逐页显示及Next按钮切换页面?

解决Tkinter页面切换的常见误区

嘿,刚接触Tkinter很容易踩这个坑!你现在的问题出在创建了两个独立的顶级窗口——每个tk.Tk()调用都会生成一个全新的系统窗口,所以root和root1是两个完全分开的窗口,按钮的lift()方法只是把其中一个窗口移到视觉上层,根本不是真正的"页面切换"。

正确的做法是在同一个主窗口内用Frame容器来模拟不同页面,通过控制Frame的显示和隐藏来实现切换。下面是修改后的代码,完全符合你的需求:

import tkinter as tk

def switch_to_page2():
    # 隐藏页面1,显示页面2
    page1.pack_forget()
    page2.pack(fill="both", expand=True)

# 只创建一个主窗口
root = tk.Tk(className='Python Examples - Page Switcher')
root.geometry("600x700")
root.resizable(0, 0)

# 创建页面1的Frame
page1 = tk.Frame(root)
page1.pack(fill="both", expand=True)
# 给页面1添加Next按钮
next_button = tk.Button(page1, text='Next', height=1, width=5, command=switch_to_page2)
next_button.place(x=30, y=600)

# 创建页面2的Frame(可以添加你需要的内容)
page2 = tk.Frame(root, bg="#f0f0f0")  # 加个背景色区分页面

# 默认显示页面1
page1.pack(fill="both", expand=True)

root.mainloop()

关键说明:

  • 只保留一个tk.Tk()实例作为主窗口,所有页面都是它的子Frame
  • pack_forget()会把当前页面从窗口布局中移除(只是隐藏,不是销毁)
  • pack(fill="both", expand=True)让Frame填满整个主窗口,模拟页面效果
  • 如果需要更复杂的页面切换(比如返回按钮),可以再写一个切换回页面1的函数

这样修改后,你就不会看到两个独立窗口,点击Next按钮会真正在同一个窗口内切换到页面2啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:37:55