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()
self.text = tk.StringVar()
self.text.set("Test")
Tkinter コンストラクターは、self.text = tk.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.text が変更されたら、self.label のテキストを更新します。
上記のコードは動的な Tkinter ラベルを作成します。self.text が変更されると、Tkinter ラベルテキストが自動的に表示されます。
Tkinter ラベルテキストを変更するためのラベル 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()