为什么函数不改变变量

问题描述 投票:0回答:2

我厌倦了在函数中更改表达式变量。我在函数中使用了全局词,但它仍然不起作用。这是一个 tkinter 问题。请帮助。

这是代码的一部分

expression = ''

sum_label = Label(root, text=expression, bg='#D3D3D3', padx=113, pady=14)
sum_label.place(x=20, y=10)


#Numbers
def press(num):
    global expression
    expression += str(num)
    print(num)

按下功能仅适用于几个按钮,但它可以工作,因为如果我打印数字,那么它就可以正常工作。但标签的文字没有改变。

python function variables tkinter global
2个回答
0
投票

创建Label时,将表达式的值设置为空字符串,不能指望用空字符串创建Label后会发生变化。所以最好在创建Label对象之前考虑这些变化


0
投票

如果您希望标签 link 到一个可变值,您需要使用

StringVar
参数指定一个
textvariable
对象,而不是通过
str
参数指定一个不可变的
text
对象。

expression = StringVar()

sum_label = Label(root, textvariable=expression, bg='#D3D3D3', padx=113, pady=14)
sum_label.place(x=20, y=10)


#Numbers
def press(num):
    global expression
    expression.set(expression.get() + str(num))
    print(num)
© www.soinside.com 2019 - 2024. All rights reserved.