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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:39:31