【问题标题】:Close a tkinter Toplevel window关闭 tkinter 顶级窗口
【发布时间】:2019-09-27 04:09:32
【问题描述】:

如何在按下按钮后关闭 tkinter 顶级窗口?我已经在按钮上关联了一个命令,所以我无法销毁窗口。

我的班级里有不止一个 Toplevel

【问题讨论】:

  • 在Toplevel 窗口上致电destroy()。同时显示你到目前为止做了什么。
  • 您必须将 Toplevel 分配给全局(或类)变量,以便您可以在其他地方访问它。然后你可以做window.destroy()。如果您有很多窗口,那么您必须将每个窗口分配给单独的变量或将它们全部保留在列表中。
  • @furas 这就是我所做的。但我认为有更聪明的方法来做到这一点
  • “更聪明”是什么意思?为什么保存引用然后在该引用上调用 destroy 不够聪明?您能否展示一些代码来说明您遇到的问题?

标签: python python-3.x tkinter toplevel


【解决方案1】:

如果你的顶部窗口按钮必须做的事情,然后退出,你可以在做完事情后调用top.destroy:

可能是这样的:

import tkinter as tk

def do_that_and_close(top):
    print('doing that')
    top.destroy()

def launch_top():
    top = tk.Toplevel(root)
    lbl = tk.Label(top, text='this is top')
    lbl.pack()    
    btn = tk.Button(top, text='do this and quit', command=lambda: do_that_and_close(top))
    btn.pack()

root = tk.Tk()
lbl = tk.Label(root, text='this is root')
lbl.pack()
root_btn = tk.Button(root, text='launch top', command=launch_top)
root_btn.pack()
quit_btn = tk.Button(root, text='quit', command=root.destroy)
quit_btn.pack()

root.mainloop()

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
相关资源
最近更新 更多