Пожалуйста, будьте осторожны, чтобы убедиться в правильности отступа при публикации кода Python.
Причина, по которой выводится 0, заключается в том, что это значение переменной при выполнении print counteraway.ca.get()
.Если вы напечатали значение внутри функции, которая вызывается снова, когда значение обновляется вашими кнопками, оно будет печататься правильно.
Например, если вы измените функцию _update_counter
на эту:
def _update_counter(self):
self.ca.set(str(self.countera))
print self.ca.get()
Вы увидите, что оно выводит правильное значение каждый раз, когда вы нажимаете кнопку, чтобы обновить значение.
С фиксированным отступом полный код будет выглядеть примерно так:
from Tkinter import *
class CounterAway(Frame):
def __init__(self, parent=None, **kw):
Frame.__init__(self, parent, kw)
self.countera = 0
self.ca = StringVar()
self._update_counter()
def _update_counter(self):
self.ca.set(str(self.countera))
print self.ca.get()
def count_up(self):
self.countera += 1
if self.countera > 99 : self.countera = 0
self._update_counter()
def count_down(self):
self.countera -= 1
if self.countera < 0 : self.countera = 0
self._update_counter()
def main():
root = Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
"""root.geometry("%dx%d+0+0" % (w, h))"""
root.geometry('1000x1000')
counteraway = CounterAway(root)
Button(root, font=('Arial',30), width=10, text='Away +', command=counteraway.count_up).place(x=450, y=300)
Button(root, font=('Arial',30), width=10, text='Away -', command=counteraway.count_down).place(x=450, y=370)
Button(root, width=10, font=('Arial',30), text='Quit', command=root.destroy).place(x=10, y=10)
counteraway_label = Label(root, font="Arial 100 bold", fg="RED", textvariable=counteraway.ca).pack()
root.mainloop()
if __name__ == '__main__':
main()