2017-07-29 101 views
0
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位以下,我知道我會得到一個錯誤,指出按鈕的命令不存在!Tk標籤小部件不刷新

回答

0

其中之一,你必須撥打mainloop()一次,絕對不是在一個無限循環。

另外,標籤不只是神奇地更新。您必須使用config方法來更改標籤小部件中顯示的字符串。

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()