动态更改Label变量

时间:2015-02-03 15:14:02

标签: python user-interface tkinter

我要做的是构建一个带有数字的窗口(默认值= 1)和 它下面的3个按钮名为:" UP"," DOWN"和"退出"。 "向上"按钮将数字增加1,其余按钮清除它们的作用。

from Tkinter import *
root=Tk()
number=1
Label(root,text=number,height=10,width=7).grid(row=0,pady=10,padx=10,column=10,columnspan=2,sticky=W+E)

def auksisi(number):
    number+=1
    return number
def meiosi(number):
    number = number -1
    return number
Label(root, text=auksisi(number),height=10,width=7).grid(row=0,pady=10,padx=10,column=10,columnspan=2,sticky=W+E)
Button(root, text="up",command=lambda: auksisi(number)).grid(row=3,column=2,columnspan=2)
Button(root, text="down",command=lambda: meiosi(number)).grid(row=3,column=3,columnspan=2)
Button(root, text="quit",command=root.destroy).grid(row=3,column=4,columnspan=2)

root.update()
root.mainloop()

当我按下按钮没有任何变化时,发生了什么。不用担心布局我会解决它,我只是想按钮工作。

1 个答案:

答案 0 :(得分:0)

grid方法返回None,并在创建对象后直接调用它,这样您的最终引用也将成为None。要更改标签的值,您需要参考它:

label_reference = Label(root, text=auksisi(number), height=10, width=7)
label_reference.grid(row=0, pady=10, padx=10, column=10, columnspan=2, sticky=W+E)

现在,通过label_reference,您可以使用例如config()方法更改文本。您可以在单击按钮时调用的方法中执行此操作:

def auksisi(number):
    number += 1
    label_reference.config(text=number)
    return number