Python Tkinter按钮的回调不改变全局变量

时间:2014-07-12 09:53:51

标签: python user-interface tkinter

目前正在使用GUI Python。我创建了一个按钮,可以更改标签所说的内容,但是,我无法将lbtext的新值“导出”回全局命名空间。我怎么做?这是我的代码:

from tkinter import *

lbtext = ""


def llb():
    global lbtext
    lbtext = "Hi"


master = Tk()

top = Canvas(master, name="gui")

but = Button(top, text="This is a button", command=llb)
but1 = Button(top, text='Meaning of life is: ', command=llb)
lb = Label(top, text=lbtext)

objs = [top, but, but1, lb]

for i in objs:
    i.pack()

mainloop()

谢谢!

1 个答案:

答案 0 :(得分:2)

访问全局命名空间可以按预期工作。问题是标签更新。

这只有在您使用 textvariable 时才有效:

v = StringVar()
lb = Label(top, textvariable=v)

在您的情况下,您必须主动更新llb回调中的标签文本:

lb.config(text=lbtext)