全局问题(python)

时间:2011-04-23 06:22:21

标签: 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()

我想要“它”,每次按下按钮都会上升。所以重播代码,这样,#每次都会增加一个......帮助

2 个答案:

答案 0 :(得分:4)

我测试了这个:

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 :(得分:1)

替换

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

无论如何应该避免全局变量(参见Alan回答更好的解决方案)