如何更改 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