我的变量没有改变,我知道它没有改变,因为“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()
最佳答案
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
中传递,而现在您的函数中有一个全局 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()
无论如何,使用全局变量应该仅限于非常特定的情况,而不是通用的。
关于python - 我的变量在函数中不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48594317/