tkinterのラベルの使い方について書いていきます。
この記事でやること。
- Labelの基本的な使い方。
- Labelに画像を貼り付ける
- Labelに表示しているテキストの更新。
関連リンク
12. The Label widget
Labelを作る。
Labelを作ってメインウィンドウに貼り付けるプログラムです。
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello")
label.pack()
root.mainloop()

オプションについて
- text : ラベルに表示するテキスト
- bg : ラベルの色
- fg : ラベルに表示しているテキストの色
- cursor : ラベルの上にマウスポインタがあるときに、マウスポインタの見た目を変更できる。詳しくはこちら。
- font : ラベルに表示している文字についての設定
- relief : ラベルの見た目の設定。詳しくはこちら。
これらのオプションを使ってラベルを作ってみると、
import tkinter as tk
root = tk.Tk()
label = tk.Label(
root, text="Hello", bg="lime green", fg="blue",
cursor="heart", font=("Helvetica", 16, "bold"), relief="groove")
label.pack()
root.mainloop()

Labelに画像を貼り付ける。
Labelに画像を貼り付けてみます。

上にある顔文字の画像をsmile.pngとしてラベルに貼り付けます。
画像を貼り付ける手順は次の通りです。
- 画像を読み込む。
- PhotoImageのオブジェクトにする
- Labelの引数imageにPhotoImageにしたオブジェクトを渡す。
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
img = Image.open("smile.png")
tkimg = ImageTk.PhotoImage(img)
label = tk.Label(root, image=tkimg, bg="black")
label.pack()
root.mainloop()
(実行結果)

Labelに表示しているテキストを更新する。
Labelに表示しているテキストを更新するにはpythonの変数を使わずにtkinterで用意されているStringVar()
を使います。
var = tk.StringVar()
StringVar()
に文字列を入れるにはset()
を使います。
var.set("Hello")
そして、このStringVar()
のオブジェクトをLabelの引数textvariable
に渡します。
label = tk.Label(root, textvariable=var, width=10, bg="white")
今回はラベルを左クリックしたときにテキストの更新をするようにバインディングの設定をしてみました。
def update_label(event):
strings = random.choice(["A", "B", "C"])
var.set(strings)
label.bind("<ButtonPress-1>", update_label)
コードをまとめるとこんな感じになります。
import random
import tkinter as tk
def update_label(event):
strings = random.choice(["A", "B", "C"])
var.set(strings)
root = tk.Tk()
var = tk.StringVar()
var.set("Hello")
label = tk.Label(root, textvariable=var, width=10, bg="white")
label.pack()
label.bind("<ButtonPress-1>", update_label)
root.mainloop()
(実行結果)

ちなみに、テキストの内容を取得するにはget()
を使います。
Q&A
画像が表示されない場合
こちらを参考にしてみてください。