Я пытаюсь написать Python GUI с tkinter, который, помимо прочего, будет работать со значениями, введенными во всплывающее «дочернее» окно.Вот очень урезанная версия графического интерфейса:
from minimalChild import Child
import tkinter as tk
class exGui(tk.Tk):
def update(self):
self.amount = Child(self)
print(self.amount)
def __init__(self):
tk.Tk.__init__(self)
frame = tk.Frame(self)
frame.grid()
self.amount = 0
self.button = tk.Button(frame, text="pay", command=self.update).grid(row=0, column=0)
self.button = tk.Button(frame, text="Quit", fg="red", command=frame.quit).grid(row=0, column=1)
def main():
exGui().mainloop()
if __name__ == '__main__':
main()
и минимальная версия дочернего класса:
import tkinter as tk
class Child(tk.Toplevel):
def submitFunction(self):
amount = 2
self.parent.amount= amount
self.destroy()
def __init__(self, parent):
tk.Toplevel.__init__(self, parent)
self.parent = parent
self.frame = tk.Frame(self)
self.frame.grid()
submit = tk.Button(self.frame, text='Submit', command = self.submitFunction).grid(row=0, column=0)
Очевидно, я не понимаю поток в методе обновления,поскольку print(self.amount)
не дает ожидаемого значения «2».Скорее, он дает некоторое число с плавающей запятой, которое появляется перед тем, как я нажимаю кнопку «отправить», и отличается каждый раз, когда я запускаю код.Есть ли способ сообщить главному окну, чтобы он дождался, пока Child вернет значение?Кроме того, кто-нибудь может объяснить, что это за десятичное число?Я ожидал, что оператор print по крайней мере вернет 0?
Я смотрел на эту ветку Передача пользовательского ввода от дочернего к родительскому окну python tkinter и все еще не мог понять, как решитьпроблема.
Любая помощь, критика или ссылки на ссылки будут приветствоваться!