如何更改 Tkinter 標籤文字
在本教程中,我們將介紹如何通過單擊按鈕來更改 Tkinter 標籤文字。
使用 StringVar
改變 Tkinter 的標籤文
StringVar
是建立 Tkinter 字串變數的 Tkinter 建構函式的一種型別。
將 StringVar
變數與 Tkinter 控制元件關聯後,修改 StringVar
變數後,Tkinter 將自動更新此控制元件。
import tkinter as tk
class Test():
def __init__(self):
self.root = tk.Tk()
self.text = tk.StringVar()
self.text.set("Test")
self.label = tk.Label(self.root, textvariable=self.text)
self.button = tk.Button(self.root,
text="Click to change text below",
command=self.changeText)
self.button.pack()
self.label.pack()
self.root.mainloop()
def changeText(self):
self.text.set("Text updated")
app=Test()
self.text = tk.StringVar()
self.text.set("Test")
Tkinter 建構函式無法使用類似於字串初始化的方法來初始化字串 StringVar
變數。
我們應該呼叫 set
方法來設定 StringVar
值,例如 self.text.set("Test")
。
self.label = tk.Label(self.root, textvariable=self.text)
通過將 textvariable
設定為 self.text
,它將 StringVar
變數 self.text
與標籤控制元件 self.label
關聯。Tk 工具箱然後開始跟蹤的更改,如果 self.text
被修改的話,它將更新 self.label
的文字。
通過標籤 text
屬性更改標籤文字
更改 Tkinter 標籤文字的另一種解決方案是更改標籤的 text
屬性。
import tkinter as tk
class Test():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(self.root, text="Text")
self.button = tk.Button(self.root,
text="Click to change text below",
command=self.changeText)
self.button.pack()
self.label.pack()
self.root.mainloop()
def changeText(self):
self.label['text'] = "Text updated"
app=Test()
標籤的文字可以用 text="Text"
來初始化,通過將新值分配給標籤物件的 text
鍵來其更新標籤文字。
我們還可以通過 tk.Label.configure()
方法來更改 text
屬性,如下面一段程式碼所示,它與上面的程式碼本質上是相同的。
import tkinter as tk
class Test():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(self.root, text="Text")
self.button = tk.Button(self.root,
text="Click to change text below",
command=self.changeText)
self.button.pack()
self.label.pack()
self.root.mainloop()
def changeText(self):
self.label.configure(text="Text Updated")
app=Test()
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn