gpt4 book ai didi

python - 我的变量在函数中不会改变

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:44 25 4
gpt4 key购买 nike

我的变量没有改变,我知道它没有改变,因为“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com