如何在没有按钮的情况下关闭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()。谢谢你,聪明的先生!(我必须说,反应也很快)