from tkinter import*
hp = 10
def inc():
global hp
hp+=2
mainloop()
def dec():
global hp
hp-=2
mainloop()
master=Tk()
w = Label(master, text="Health = " + str(hp))
bu = Button(master, text="Increase", command=inc)
bd = Button(master, text="Decrease", command=dec)
bu.pack()
bd.pack()
w.pack()
while True:
mainloop()
我想要显示整数变量的标签' hp'单击更改其值的按钮窗口小部件时更新。为什么不令人耳目一新?如果我将定义位置于tk位下方,我知道我会收到一个错误,指出按钮'命令不存在!
答案 0 :(得分:0)
首先,你必须完全调用mainloop()
一次,绝对不能无限循环。
另一方面,标签不会神奇地更新。您必须使用config
方法更改标签小部件中显示的字符串。
答案 1 :(得分:0)
函数mainloop()
本身就是一个循环(线索在名称中),所以你不要在无限循环中调用它。这将解决部分问题。
此外,您需要使用w.config(text="somenewlabeltext")
来更改文本,因为您最初创建标签时,文本已设置,即使您更改hp,字符串也不会像您找到的那样发生变化。
您的最终代码可能如下所示:
from tkinter import *
hp = 10
def inc():
global hp, w
hp+=2
w.config(text="Health = " + str(hp))
def dec():
global hp, w
hp-=2
w.config(text="Health = " + str(hp))
master=Tk()
w = Label(master, text="Health = " + str(hp))
w.pack()
bu = Button(master, text="Increase", command=inc)
bu.pack()
bd = Button(master, text="Decrease", command=dec)
bd.pack()
mainloop()