У меня возникли проблемы с этим кодом, который не будет выполнять код в определенной точке. Я не могу описать проблему в формулировке, но в коде оставшийся код под window.mainloop()
не будет работать так, как мне нужно, если главное окно (gui) не будет закрыто, что является проблематичным. Я хочу иметь возможность print(t.test)
, когда весь код под def calculate полностью выполнен. Я технически мог это сделать, удалив window.mainloop()
, но это запустит код, прежде чем я смогу собрать ввод, который является жизненно важным. Мне нужно сохранить структуру кодирования так же, как показано ниже.tkinter последовательное выполнение заказа
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()
EDIT: Кажется, я был в состоянии заставить его вести себя так же, как и держать ту же самую структуру, поставив print(t.test)
под своей определенной функции и затем вызвать его под def calculate(userinput, window, t)
в последней строке. Я тестировал это, но это заставляет замораживать главное окно.