Боже, какая у тебя большая кнопка.
Если вы используете tkinter Variable
, то его обновление автоматически изменит то, что есть в любых виджетах, которые ссылаются на один из них. Вот некоторые документы , описывающие их, и вот некоторые другие , описывающие, как их использовать.
Вот как это можно сделать с кодом в вашем вопросе:
import tkinter
root = tkinter.Tk()
root.title('Test Button')
root.geometry('600x450')
class Letter:
def __init__(self, value):
self.value = tkinter.IntVar(value=value) # Store in a tkinter Variable.
class Label:
def __init__(self, master, letter):
self.a_label = tkinter.Label(master, textvariable=letter.value)
self.a_label.grid(row=2, column=1)
class Button:
def __init__(self, master, letter):
self.letter = letter
self.Button1 = tkinter.Button(master, height=12, width=24,
command=self.update_letter)
self.Button1.grid(row=1, column=1)
def update_letter(self):
current_value = self.letter.value.get()
print("letter.value before: " + str(current_value))
self.letter.value.set(self.letter.value.get() + 1)
print("letter.value now: " + str(self.letter.value.get()))
# initialize a
a = Letter(0)
b = Button(root, a)
l = Label(root, a)
root.mainloop()
Комментарий: Я обнаружил, что ваши собственные классы, названные так же, как в tkinter
, немного сбивают с толку, потому что, хотя они внешне кажутся похожими, на самом деле они очень отличаются - что может привести к трудным для понимания ошибкам программирования.