我遇到了这个代码在某个时候不会执行代码的问题。我无法真正用措辞描述问题,但在代码中,window.mainloop()
除非主窗口(gui)关闭,否则其余代码将不会按我的需要运行,这是有问题的。我希望能够print(t.test)
在 def calculate 下的所有代码都已完全执行时。从技术上讲,我可以通过删除来做到这一点,window.mainloop()
但这将在我收集至关重要的输入之前运行代码。我还需要保持编码结构相同,如下所示。
import tkinter
class Test:
def __init__(self):
self.test = False
def calculate(window, userinput, t):
test = userinput.get()
print(test)
window.destroy()
t.test = True
def main():
t = Test()
gui = tkinter.Tk()
gui.title("example window")
gui.geometry("400x400")
userinput = tkinter.StringVar()
window = tkinter.Toplevel()
window.title("Entry")
tkinter.Message(window, text="Label", width="200").pack()
tkinter.Entry(window, width=30, textvariable=userinput).pack()
tkinter.Button(window, text="ok", command=lambda: calculate(window, userinput, t)).pack()
window.mainloop()
print(t.test)
gui.mainloop()
main()
编辑:print(t.test)
似乎我能够通过将其放在自己定义的函数下然后def calculate(userinput, window, t)
在最后一行调用它
来使其行为相同并保持相同的结构。我对此进行了测试,但它导致主窗口冻结。