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

如何在Tkinter中重新显示withdrawn根窗口并保留表单填写内容?

解决方法

要恢复用withdraw()隐藏的Tkinter窗口,直接调用窗口对象的deiconify()方法就行——因为withdraw()只是把窗口从屏幕上藏起来,并没有销毁窗口或里面的控件,所以之前填写的表单内容会完整保留。

针对你说的root1和root2的切换场景,下面是完整的可运行示例代码:

import tkinter as tk

def open_root2():
    # 隐藏root1,显示root2
    root1.withdraw()
    root2.deiconify()

def back_to_root1():
    # 隐藏root2,恢复root1(保留之前的输入内容)
    root2.withdraw()
    root1.deiconify()

# 创建表单窗口root1
root1 = tk.Tk()
root1.title("表单窗口")
root1.geometry("300x200")

# 表单输入控件
entry_name = tk.Entry(root1, width=30)
entry_name.pack(pady=10)
entry_name.insert(0, "可修改的示例内容")

entry_phone = tk.Entry(root1, width=30)
entry_phone.pack(pady=10)

# 跳转至root2的按钮
btn_switch = tk.Button(root1, text="进入窗口2", command=open_root2)
btn_switch.pack(pady=20)

# 创建root2,初始状态隐藏
root2 = tk.Tk()
root2.title("窗口2")
root2.geometry("300x200")
root2.withdraw()

# 返回root1的按钮
btn_back = tk.Button(root2, text="返回表单", command=back_to_root1)
btn_back.pack(pady=50)

# 启动主循环
root1.mainloop()

核心细节说明

  • root1.withdraw():仅隐藏窗口,不会销毁任何控件或清除输入内容,所有状态都会被保留
  • root1.deiconify():将隐藏的窗口重新显示,完全恢复之前的界面和输入状态
  • root2初始通过withdraw()隐藏,只有在root1触发跳转后才会显示

这样设置后,点击root2的返回按钮,就能直接回到保留所有输入内容的root1窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:55:20