我为我的应用程序创建了一个tkinter Toplevel窗口,后来在程序中销毁了它但是在销毁窗口之后,程序没有被进一步执行并且在那里无所事事地被击中。这是我使用的代码: -
#login.py
from tkinter import *
class gui:
def __init__(self):
#does something
def login(self):
self.winLogin.destroy()
def guilogin(self):
self.winLogin = Toplevel()
btn = Button(self.winLogin,command=self.login,text='asd')
btn.pack()
self.winLogin.mainloop()
#main.py
import login
from tkinter import *
main = Tk()
a = login.gui()
a.guilogin()
if True:
#some code and this part doesnot get executed
main.mainloop()
else:
main.destroy()
我运行main.py文件并且代码被触发并且在if部分之前什么都不做。我总是不知道什么是错的。 PLS。救命啊!
答案 0 :(得分:2)
正如furas在评论中所说,你不应该在顶层调用mainloop
,而是使用grab_set
来禁用主窗口,wait_window
等待顶层关闭:
from tkinter import Tk, Toplevel, Button
def login():
top = Toplevel(root)
Button(top, text="Quit", command=top.destroy).pack()
top.grab_set() # deactivate the main GUI while top is opened
root.wait_window(top) # wait for top to be closed before doing the rest
print("logged in")
root = Tk()
Button(root, text="login", command=login).pack()
root.mainloop()