глобальный вопрос (питон) - PullRequest
0 голосов
/ 23 апреля 2011

У меня есть код:

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()

Я хочу иметь "свое", повышение каждый раз, когда я нажимаю кнопку.такой вид воспроизведения кода, чтобы его # каждый раз увеличивался на единицу ... help

Ответы [ 2 ]

4 голосов
/ 23 апреля 2011

Я проверял это:

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.

1 голос
/ 23 апреля 2011

Замените

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()

в любом случае следует избегать глобальных переменных (для лучшего решения см. Ответ Алана)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...