#python #tkinter
#python #tkinter
Вопрос:
У меня есть код:
from Tkinter import *
admin = Tk()
a = 1
def up():
global a
a = 1
def upp():
up()
print a
print 'its ',a
buttton = Button(admin, text='up', command=upp)
buttton.pack()
mainloop()
Я хочу, чтобы значение «its» повышалось каждый раз, когда я нажимаю кнопку. таким образом, как бы воспроизводим код, чтобы его # увеличивался на единицу каждый раз … помогите
Ответ №1:
Я тестировал это:
from Tkinter import *
import itertools
admin = Tk()
a = itertools.count(1).next
def upp():
print a()
buttton = Button(admin, text='up', command=upp)
buttton.pack()
mainloop()
Это будет начинаться со значения 1, и при каждой его печати будет добавляться еще одно. Итак, при первом нажатии на него отобразится 1 в стандартном out.
Комментарии:
1. протестировал и отредактировал мой образец. Кажется, это работает так, как он просит, если я не неправильно понимаю.
2. Вы были правы, бросив мне вызов в моем решении. Я не тестировал эту идею, чтобы убедиться в ее правильности. Я относительно новичок в python, поэтому такая проверка работоспособности приветствуется.
3. Это работает не так , как я хотел . я хотел, чтобы он печатал 1 вне функции, а затем воспроизводил весь код.
Ответ №2:
Заменить
def upp():
up()
print a
print 'its ',a
buttton = Button(admin, text='up', command=upp)
buttton.pack()
mainloop()
с
def upp():
up()
print 'its ', a
buttton = Button(admin, text='up', command=upp)
buttton.pack()
mainloop()
и это работает так, как вы хотите.
Обновление: Обратите внимание, что вам не нужны две функции. Упрощенная версия:
from Tkinter import *
admin = Tk()
a = 0
def upp():
global a
a = 1
print 'its ', a
buttton = Button(admin, text='up', command=upp)
buttton.pack()
mainloop()
в любом случае следует избегать глобальных переменных (см. Ответ Алана для лучшего решения)