如何在没有按钮的情况下关闭tkinter窗口而不完全关闭Python?
我知道有一些命令,如如何在没有按钮的情况下关闭tkinter窗口而不完全关闭Python?,python,tkinter,window,exit,Python,Tkinter,Window,Exit,我知道有一些命令,如.destroy(),.exit()等。但是,当从按下按钮时要执行的操作的“命令”参数中取出这些命令时,它们不起作用 我的场景是,当用户成功登录时,Tkinter窗口(包括其小部件)应在pygame中的GUI打开后不久关闭。我只是不希望Tkinter窗口出现一次,我不再需要它,同时也不退出Python。我不想要按钮,因为我希望过程是自动的 让我困惑的是,为什么在单独执行此命令时,它不起作用: Button(root, text="Quit", command=root.des
.destroy()
,.exit()
等。但是,当从按下按钮时要执行的操作的“命令”参数中取出这些命令时,它们不起作用
我的场景是,当用户成功登录时,Tkinter窗口(包括其小部件)应在pygame中的GUI打开后不久关闭。我只是不希望Tkinter窗口出现一次,我不再需要它,同时也不退出Python。我不想要按钮,因为我希望过程是自动的
让我困惑的是,为什么在单独执行此命令时,它不起作用:
Button(root, text="Quit", command=root.destroy).pack() #works
root.destroy() #don't works
没有看到更多的源代码,我想问题在于调用
root.destroy()
如果它在阻塞tk.mainloop()
之后出现,则永远不会到达它。请阅读关于这个问题的文章
基于上述内容的可能解决方案:
while True:
tk.update_idletasks()
tk.update()
if login_successful: # or whatever your login check looks like
root.destroy()
将
mainloop
替换为自定义循环,其中包括检查是否成功登录。在同一函数调用root.destroy()中成功登录后,我丢失了什么。我离开了mainloop(),正如您所说,它不允许我访问.destroy()。谢谢你,聪明的先生!(我必须说,反应也很快)