HOWTO · Tkinter

如何更改 Tkinter 标签文本

本教程介绍了如何更改 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()

Tkinter set Label text

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