我的变量没有改变,我知道它没有改变因为" 1"打印到控制台。 当我按下按钮时,我试图使标签增加。但是,当我按下按钮时,变量保持为1。 我究竟做错了什么? 我已经在网上寻找答案,但我找不到一个我能理解的答案。
num = 0
import tkinter
box = tkinter.Tk()
v = tkinter.StringVar()
labels = tkinter.Label(box, textvariable = v)
labels.pack()
def numberz(num,v):
num += 1
v.set(num)
print(num)
class MainWindow():
box.title("My Stupid Program")
buddon = tkinter.Button(box, text='PRESS ME', command = lambda:numberz(num,v))
buddon.pack()
box.mainloop()
答案 0 :(得分:1)
num = 0
import tkinter
box = tkinter.Tk()
v = tkinter.StringVar()
labels = tkinter.Label(box, textvariable = v)
labels.pack()
def numberz(num,v):
num += 1
v.set(num)
print(num)
class MainWindow():
box.title("My Stupid Program")
buddon = tkinter.Button(box, text='PRESS ME', command = lambda:numberz(num,v))
buddon.pack()
box.mainloop()
您正在更改参数 num
而不是全球变量num
要更改全局,您需要专门引用它。请注意num
中lambda
未在global num
中传递,现在您的函数中有num = 0
import tkinter
box = tkinter.Tk()
v = tkinter.StringVar()
labels = tkinter.Label(box, textvariable = v)
labels.pack()
def numberz(v):
global num
num += 1
v.set(num)
print(num)
class MainWindow():
box.title("My Stupid Program")
buddon = tkinter.Button(box, text='PRESS ME', command = lambda:numberz(v))
buddon.pack()
box.mainloop()
。
map
在任何情况下,使用全局变量都应限于非常具体的情况,而不是一般用途。