PythonでGUIアプリを作成できるモジュールtkinter(ティーキンター)のLabelの使い方について解説します。
サンプルコードはモジュールのインポートを from tkinter import *
としています。
関数を呼び出す際にパッケージ名の接頭辞 (tk.Frame()
のtk.
)を省略できるのでおすすめです。
Lablelとは
Lablelは文字を表示するためのWidget(ウィジェット)です。
オプションを指定することで、文字色・背景色・フォントなどを変更することが可能です。
また、文字だけでなく画像を表示することもできます。
Lableのオプション一覧
Labelで指定可能なオプション一覧です。
オプション | 説明 | 値の形式 |
---|---|---|
text | 表示するテキストを指定 | 文字列 |
bg (background) | 背景色 | 色名または16進数カラーコード |
fg (foreground) | 文字色 | 色名または16進数カラーコード |
width | Labelの幅 | テキスト単位(ピクセルではない) |
height | Labelの高さ | テキスト単位(ピクセルではない) |
font | フォントタイプ・サイズを指定 | タプル(フォント名, サイズ) |
padx | ラベル内に縦方向のスペースを追加 | ピクセル値 |
pady | ラベル内に横方向のスペースを追加 | ピクセル値 |
anchor | テキストを配置する基準位置 (デフォルトはCENTER) | (基本)CENTER, N, S, W, E (組合せ)NW, NE, SW, SE |
relief | 枠線タイプ (デフォルトはflat) | flat, solid, groove, raised, ridge, sunken |
bd (borderwidth) | 枠線の幅(デフォルトは2px) relief とセットで設定 | ピクセル値 |
justify | テキストが複数行にわたる場合の配置位置 | LEFT, CENTER, RIGHT |
textvariable | 文字列を動的に変化させる場合に使用 | StringVarクラスのインスタンスを指定 |
image | 表示する画像を指定 | PhotoImageオブジェクト |
compound | 表示画像の位置を指定 | top, bottom, right, left, center |
テキスト表示(text)
テキストを表示するには、text
で文字列を指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from tkinter import * root = Tk() root.title('Labelの使い方') root.geometry('200x100') # ラベル設定 label1 = Label(root, text='ラベル1') label2 = Label(root, text='ラベル2') # ラベルをpackで配置 label1.pack() label2.pack() root.mainloop() |
背景色(bg)
背景色を設定するには、bg
(background
)を指定します。
値は色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典
1 2 | label1 = Label(root, text='ラベル1', bg='blue') label2 = Label(root, text='ラベル2', bg='#ff0000') |
文字色(fg)
文字色を設定するには、fg
(foreground
)を指定します。
値は色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典
1 2 | label1 = Label(root, text='ラベル1', fg='blue') label2 = Label(root, text='ラベル2', fg='#ff0000') |
幅・高さ(width, height)
ラベルの幅と高さは文字列に合わせて自動で伸縮しますが、width
, height
でサイズを指定することができます。
1 2 | label1 = Label(root, text='ラベル1', bg='pink', width=10, height=3) label2 = Label(root, text='ラベル2', bg='skyblue') |
フォント指定(font)
フォントの種類とサイズを変更するにはfont
をタプル(フォント名, サイズ)で指定します。
1 2 | label1 = Label(root, text='ラベル1', font=('MS UI Gothic', 20)) label2 = Label(root, text='ラベル2', font=('MS P明朝', 14)) |
ラベル内にスペースを追加(padx, pady)
padx
, pady
でラベルの枠とテキストの間にスペースを追加します。weight
, height
に似ていますが、こちらではテキストの内容に応じて一定のスペースを確保できます。
1 2 | label1 = Label(root, text='ラベル1', bg='pink', padx=10, pady=10) label2 = Label(root, text='ラベル2', bg='skyblue') |
配置の基準位置(anchor)
ラベル文字の基準位置をanchor
で指定します。
上下左右=北南西東として頭文字の記号の組み合わせで指定します。
値は、上=N
, 下=S
, 右=E
, 左=W
となります。
記号と位置関係は下図のようになります。
1 2 | label1 = Label(root, text='ラベル1', bg='pink', width=10, height=3, anchor=W) label2 = Label(root, text='ラベル2', bg='skyblue', width=10, height=3, anchor=NE) |
枠線(relief, bd)
relief
でラベルの枠線を設定します。
線の太さを変更したい場合はbd
を指定します。デフォルトは2pxです。
1 2 3 4 5 6 | label1 = Label(root, text='flat', width=10) label2 = Label(root, text='solid', relief='solid', bd=4, width=10) label3 = Label(root, text='groove', relief='groove', bd=4, width=10) label4 = Label(root, text='raised', relief='raised', bd=4, width=10) label5 = Label(root, text='ridge', relief='ridge', bd=4, width=10) label6 = Label(root, text='sunken', relief='sunken', bd=4, width=10) |
複数行の配置位置(justify)
ラベルの文字列が複数行の場合にjustify
で寄せ方向を指定できます。
デフォルトはCENTER(中央)です。
1 | label1 = Label(root, text='テキストが複数行の場合の\n配置位置', justify=LEFT) |
文字列を動的に変更(textvariable)
textvariable
を指定することで、ラベルに表示する文字列を動的に変化させることができます。設定値は、StringVarクラスのインスタンスを参照する変数を指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | from tkinter import * def label_click(event): label_text.set("クリックされました") root = Tk() root.title('Labelの使い方') root.geometry('200x100') # StringVarクラスのインスタンス生成 label_text = StringVar(root) # インスタンスに文字列をセット label_text.set("クリックしてください") # ラベル設定 label = Label(root, textvariable=label_text) # ラベルをpackで配置 label.pack() # bind関数でラベルクリック時の動作を設定 label.bind("<ButtonPress>", label_click) root.mainloop() |
画像表示(image, compound)
Labelはテキストだけでなく画像を表示することもできます。
画像ファイルをPhotoImageオブジェクトとして読み込み、image
に設定します。
また、テキストと一緒に表示する場合はcompound
で画像の配置位置を指定できます。
位置はtop
, bottom
, right
, left
, center
でテキストに対する相対位置を指定します。
1 2 3 4 5 6 7 8 9 | # 画像設定 img = PhotoImage(file='./python_logo.png') # ラベル設定 label1 = Label(root, text='top', image=img, compound='top') label2 = Label(root, text='bottom', image=img, compound='bottom') label3 = Label(root, text='right', image=img, compound='right') label4 = Label(root, text='left', image=img, compound='left') label5 = Label(root, text='center', image=img, compound='center') |
以上でLabelの使い方の解説は終了です。
以下の記事も参考にしてみて下さい。
・関連記事:PythonでGUIアプリを作成する(tkinter)
・関連記事:【Python/tkinter】Frameの使い方
・関連記事:【Python/tkinter】Widgetの配置(grid)
・関連記事:【Python/tkinter】Widgetの配置(pack)