如何在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
相关产品推荐
相关产品推荐

