在Tkinter中如何点击原有界面按钮创建新窗口?
Tkinter点击按钮生成带组件的新窗口实现方法
你需要在new_window()函数中创建Tkinter的Toplevel组件(这是Tkinter专门用来创建子窗口的类,不要重复实例化Tk(),否则会出现消息循环异常),然后把需要的Button、Label等组件的父容器指定为这个新的Toplevel窗口即可。
完整的new_window()函数实现示例
from tkinter import Tk, Button, Toplevel, Label def new_window(): # 1. 创建新的子窗口实例 win_new = Toplevel() # 2. 可按需设置新窗口的标题、尺寸等属性 win_new.title("新窗口") win_new.geometry("300x200") # 3. 在新窗口中添加Label组件,父容器指定为刚创建的win_new Label(win_new, text="这是新窗口的Label内容").pack(pady=20) # 4. 在新窗口中添加Button组件,父容器同样指定为win_new # 示例为绑定点击关闭当前新窗口的逻辑,可按需修改绑定的函数 Button(win_new, text="关闭新窗口", command=win_new.destroy).pack(pady=10) # 主窗口运行逻辑示例 if __name__ == "__main__": root = Tk() root.title("主窗口") # 你的原有按钮代码,注意指定父容器为root避免渲染异常 Button(root, text = "click", command = new_window).pack(pady=50) root.mainloop()
注意要点
- 所有新窗口内的组件,必须把第一个父容器参数指定为你创建的
Toplevel实例,否则组件会默认渲染到主窗口上 - 不要在
new_window()里调用Tk()创建新窗口,一个Tkinter程序只需要一个主Tk()实例和对应的主消息循环 - 如果需要给新窗口传递数据,可以通过全局变量、类属性,或者闭包的方式实现
内容的提问来源于stack exchange,提问作者Gulshan_kumar_pal
相关产品推荐
相关产品推荐

