HOWTO · Tkinter

So ändern Sie den Tkinter-Labeltext

Dieses Tutorial demonstriert, wie man den Tkinter-Labeltext ändert.

Auf dieser Seite

In diesem Tutorial wird vorgestellt, wie man den Tkinter-Labeltext durch Anklicken einer Schaltfläche ändert.

Benutzen Sie StringVar, um den Tkinter-Labeltext zu ändern

StringVar ist ein Typ des Tkinter-Konstruktors, um die Tkinter-String-Variable zu erstellen.

Nachdem wir die StringVar-Variable mit den Tkinter-Widgets assoziiert haben, wird Tkinter dieses spezielle Widget aktualisieren, wenn die Variable verändert wird.

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

Der Tkinter-Konstruktor konnte die String-Variable nicht mit dem String wie self.text = tk.StringVar() initiieren.

Wir sollten die set Methode aufrufen, um den StringVar Wert zu setzen, wie self.text.set("Test").

self.label = tk.Label(self.root, textvariable=self.text)

Sie assoziiert die StringVar Variable self.text mit dem Label-Widget self.label, indem sie die textvariable auf self.text setzt. Das Tk-Toolkit beginnt, die Änderungen von self.text zu verfolgen und wird den Text self.label aktualisieren, wenn self.text modifiziert wird.

Der obige Code erstellt ein dynamisches Tkinter-Label. Es zeigt den Tkinter-Labeltext automatisch an, wenn self.text geändert wird.

Label text Eigenschaft zum Ändern des Labeltextes

Eine andere Lösung, um den Text des Tkinter-Labels zu ändern, ist die Änderung der text-Eigenschaft des Labels.

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

Der Text des Labels könnte mit text="Text" eingeleitet werden und könnte auch aktualisiert werden, indem man den neuen Wert dem text Schlüssel des Label-Objektes zuweist.

Wir könnten auch die text Eigenschaft mit der tk.Label.configure() Methode ändern, wie unten gezeigt. Es funktioniert mit den oben genannten Codes genauso.

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