【问题标题】:How to close tkinter window without a button and not closing Python completely?如何在没有按钮的情况下关闭 tkinter 窗口并且不完全关闭 Python?
【发布时间】:2018-09-09 16:19:48
【问题描述】:

我知道有诸如.destroy().exit() 等命令。但是,当从按下时要执行的操作的按钮参数的“命令”中取出这些命令时,它们不起作用。

我的场景是当用户成功登录时,Tkinter 窗口及其小部件应该在 pygame 中的 GUI 打开后不久关闭。我只是不希望 Tkinter 窗口在我不再需要它时出现在那里,同时也不退出 Python。我不想要一个按钮,因为我希望这个过程是自动的。

让我感到困惑的是,为什么当把这个命令单独拿出来时,它不起作用:

Button(root, text="Quit", command=root.destroy).pack() #works
root.destroy() #don't works

【问题讨论】:

  • 登录成功后在同一个函数调用root.destroy()

标签: python tkinter window exit


【解决方案1】:

没有看到更多的源代码,我猜这个问题是基于你调用root.destroy()

哪里

如果它在阻塞tk.mainloop() 之后出现,则永远无法到达。关于这个问题,请阅读Tkinter understanding mainloop

基于上述的可能解决方案:

while True:
    tk.update_idletasks()
    tk.update()
    if login_successful: # or whatever your login check looks like
        root.destroy()

您将mainloop 替换为您的自定义循环,其中包括对成功登录的检查。

【讨论】:

  • 正是我所缺少的。我离开了 mainloop() ,就像你说的那样不允许我到达 .destroy() 。谢谢聪明先生! (我也必须说快速响应)
猜你喜欢
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
相关资源
最近更新 更多