如何使用Python Tkinter关闭其他窗口?附相关代码片段
如何用Python Tkinter关闭其他窗口
我来帮你搞定这个问题~你代码里用login.quit()其实只是终止了登录窗口的事件循环,但窗口本身并没有被销毁,所以登录窗口会一直留在屏幕上。要彻底关闭窗口,应该用destroy()方法。
先给你修正后的完整代码,我把你截断的部分补全了:
import tkinter as tk def main_gui(login, s): login.destroy() # 彻底销毁登录窗口,替代原来的quit() win = tk.Tk() win.geometry('300x150') name = tk.Label(win, text='Hello ' + s.get()) # Hello David name.pack() win.mainloop() # 初始登录窗口 login = tk.Tk() login.title('Login') login.geometry('300x150') # 用户名输入框 user_name_var = tk.StringVar() user_name_var.set('David') tk.Label(login, text='User name').place(x=10, y=50) user_name = tk.Entry(login, textvariable=user_name_var) user_name.place(x=80, y=50) # 加个按钮触发跳转主窗口 tk.Button(login, text='登录', command=lambda: main_gui(login, user_name_var)).place(x=120, y=90) login.mainloop()
关键点说明:
login.destroy():这个方法会彻底销毁登录窗口,释放它占用的所有资源,这才是真正意义上的“关闭窗口”,而quit()只是停止事件循环,窗口实体还在。- 如果你是在主窗口中打开多个子窗口(比如用
Toplevel()创建的弹窗),要关闭指定子窗口的话,直接调用该子窗口对象的destroy()方法即可;如果要关闭所有子窗口,可以遍历root.winfo_children()筛选出Toplevel对象再逐一销毁。
内容的提问来源于stack exchange,提问作者vincentlai
相关产品推荐
相关产品推荐

