Python

PythonのTkinterでLabelを作成する方法を解説!

Tkinterの画面にラベルを配置したい

こういった思いを持たれている方に向けて、Tkinterでラベルを作成する方法を解説します。

  1. Tkinterでラベルを作成する方法を理解できる

ラベル作成方法

それでは早速、ラベルの作成方法をご紹介します。

ラベルはtkinter.Label()で作成することができます。

Label()の第一引数にはそのラベルを作成したい場所を指定します。

第二引数以降は、自分が設定したいテキストや背景色など各種情報の設定を行います。

例えばtkinter.Label(root, text=’label’)のように指定すると、’label’というテキストが書かれたラベルが作成されます。

labelの作成例

上記画像のウィンドウを作成したコードは以下になります。

import tkinter

# ウィンドウの作成
root = tkinter.Tk()
root.geometry('400x400')

# ラベルの作成
label_1 = tkinter.Label(root, text='label')
label_1.pack(pady=10)

# ウィンドウのループ処理
root.mainloop()

tkinter.Label()でラベルを作成して、作成したラベルをpack()でrootウィンドウ上に表示させています。

tkinterでは作成したウィジェットに対して必ず、配置の命令文を書く必要があります。

pack()文を忘れないようにしてください。

なおウィジェットの配置にはpack()の他にgrid()やplace()があります。

Labelオプション一覧

続いてLabelウィジェットを作成する際に、利用できるオプションについて解説していきます。

width/height

まずはwidth属性とheight属性です。

width属性ではラベルの横幅を指定することができます。

height属性ではラベルの縦幅を指定することが可能です。

どちらもwidth=100、height=100のように数値で幅を指定します。

text

text属性はラベルに表示するテキストを指定するために使用します。

例えばtext=’ラベル’とするとtkinterの画面上に「ラベル」という文字列のlabelが表示されます。

textvariable

textvariableもラベルに表示するテキストを指定するために使用します。

text属性との違いは、tkiter.StringVar()クラスのインスタンスを変数として渡すかどうかにあります。

以下のコードをみてください。

import tkinter

# ラベルが実行された時に使う関数の定義
def change_label(event):
    text_variable.set('change')

# ウィンドウの作成
root = tkinter.Tk()
root.geometry('400x400')

# テキスト変数の定義
text_variable = tkinter.StringVar()
text_variable.set('label')

# ラベルの作成
label_1 = tkinter.Label(root, textvariable=text_variable)
label_1.pack(pady=10)

label_1.bind('<ButtonPress>', change_label)

# ウィンドウのループ処理
root.mainloop()

tkinter.StringVar()で作成したインスタンスをtextvariableに渡しています。

またlabel_1.bind(‘<ButtonPress>’, change_label)でラベルがクリックされた時に実行される関数をしています。

そしてその関数change_labelにおいてtkinter.StringVar()に格納している文字列の更新を行なっています。

以上のコードを実行してラベルをクリックすると、テキストが「label」から「change」に変更されます。

font

font属性はラベルに表示するテキストのフォントを指定するための属性です。

font=(‘Arial’, 30, ‘bold’)のようにタプルでフォントを指定します。

(‘Arial’, 30, ‘bold’)ではフォントの種類、文字サイズ、太字表示の順でテキストのフォントを指定しています。

foreground/background

foreground属性ではテキストの色を設定することができます。

またbackground属性ではラベルの背景色を設定可能です。

fg=’red’、bg=’yellow’のように指定します。

また色の指定方法には、fg=’#e6e6fa’のようにカラーコードも使用することができます。

highlightcolor/highlightbackground/highlightthickness

highlightcolor属性ではラベルがフォーカスされた時の囲い線の色を指定することができます。

highlightbackground属性ではラベルがフォーカスされていない時の囲い線の色を指定可能です。

highlightthickness属性では囲い線の太さを指定することができます。

例えば以下のように使います。

import tkinter

# フォーカスの設定関数
def focus_label(event):
    label_1.focus()

# ウィンドウの作成
root = tkinter.Tk()
root.geometry('400x400')

# ラベルの作成
label_1 = tkinter.Label(root, text='label', highlightcolor='yellow', highlightbackground='pink', highlightthickness=30)
label_1.pack(pady=30, ipady=30, ipadx=30)

# ラベルがクリックされた時の処理を設定
label_1.bind('<ButtonPress>', focus_label)

# ウィンドウのループ処理
root.mainloop()

上記のコードによってラベルの囲い線がピンク色で設定されます。

hilightbackgroundcolorの実行結果

ラベルをクリックするとfocus_labelという関数が実行されて、ラベルがフォーカスされている状態になります。

するとラベルの囲い線が黄色に変わります。

hilightcolorの実行結果

wraplength

wraplength属性では、ラベル上のテキストが改行されるピクセルサイズを指定することができます。

例えば以下のように記述します。

# ラベルの作成
label_1 = tkinter.Label(root, text='aaaaaaaaaa', wraplength=30)
label_1.pack(pady=10)

上記のコードにより’aaaaaaaaaa’という文字列が自動的に改行されて以下のようになります。

wraplengthの実行結果

wraplength=30とすることでラベルの一行あたりのサイズが30ピクセルになっており、一行に収まりきらなかった文字列は改行されています。

anchor

anchor属性ではラベル内のテキストをどの方向に寄せるかを指定できます。

例えばanchor=’center’とすると文字列が中央揃えで表示されます。

その他にanchorで指定できる方向は以下になります。

n上揃え
ne右上揃え
e右揃え
se右下揃え
s下揃え
sw左下揃え
w左揃え
nw左上揃え
center中央揃え

n, e, s, wはそれぞれnorth, east, south, westの頭文字です。

方角と合わせて覚えると使いやすいです。

justify

justify属性はラベルのテキストが複数行の時に、テキストをどの方向に寄せるかを指定するために使います。

例えばjustify=’center’のように設定するとテキストが中央揃えになります。

justifyで使用できる方向は以下の3つになります。

right右揃え
left左揃え
center中央揃え

relief

relief属性ではラベルの枠線のスタイルを設定することができます。

デフォルトではrelief属性はflatになっており、枠線は見えません。

relief属性では「flat」「groove」「sunken」「solid」「ridge」「raised」の6つを選択することができます。

relief=’groove’にした場合、以下の画像のようになります。

grooveの実行結果

relief=’sunken’にした場合、以下の画像のようになります。

sunkenの実行結果

relief=’solid’にした場合、以下の画像のようになります。

solidの実行結果

relief=’ridge’にした場合、以下の画像のようになります。

ridgeの実行結果

relief=’raised’にした場合、以下の画像のようになります。

raisedの実行結果

borderwidth

reliefで枠線を指定した場合、その枠線の幅をborderwidthで指定することができます。

borderwidth=5のように数値を指定します。

image

image属性を利用するとラベルに画像を配置することができます。

画像属性を用いた具体例は以下になります。

image_ = tkinter.PhotoImage(file='ship.png')
label_1 = tkinter.Label(root, text='label', cursor='cross', image=image_, compound='top')
label_1.pack()
compoundをtopにした時の実行結果

tkinter.PhotoImage()で画像の読み込みを行なって、読み込んだ画像をimage属性に渡すことで画像をラベルとして表示しています。

tkinter.PhotoImageではjpg画像は利用できません。.png画像を指定するようにしましょう。

compound

text属性、image属性とセットで使われるのがcompound属性です。

compound属性ではテキストと画像の配置を指定することができます。

compound=’bottom’とすると以下のようにテキストと画像が配置されます。

compoundをbottomにした時の実行結果

UFOの画像がテキストの下側に来ています。

このようにcompound=”ではテキストに対する画像の位置を指定することができます。

compoundで指定できるのは「bottom」「top」「left」「right」「center」の5つになります。

compoundをcenterにした時の実行結果

上記画像はcompund=’center’にした例です。

テキストと画像が重なっていてみにくいですが、画像中央にテキストが配置されていることが分かります。

compoundをleftにした時の実行結果

上記はcompound=’right’にした例です。

bitmap

bitmap属性ではOSに標準で用意されている画像を使用することができます。

例えば以下のようにbitmap=’caution’と指定したとします。

tkinter.Label(root, bitmap='caution').pack(pady=30)

以上のコードによって以下のような画面が作成されます。

bitmapの実行結果

bitmap=’caution’で三角のビックリマークが表示されました。

この他にも様々なビットマップが利用できます。

  • document
  • stationery
  • edition
  • application
  • accessory
  • folder
  • pfolder
  • trash
  • floppy
  • ramdisk
  • cdrom
  • preferences
  • querydoc
  • stop
  • note
  • caution

macでは以上のビットマップが使用できます。

cursor

cursor属性はラベル上にカーソルを持っていった時に、どのような見た目のカーソルを表示するかを指定する属性になります。

  • arrow
  • top_left
  • left_ptr
  • cross
  • crosshair
  • tcross
  • ibeam
  • none
  • xterm
  • zoom-in
  • zoom-out
  • copyarrow
  • aliasarrow
  • contextualmenuarrow
  • movearrow
  • text
  • cross-hair
  • hand
  • openhand
  • closedhand
  • fist
  • pointinghand
  • resize
  • resizeleft
  • resizeright
  • resizeleftright
  • resizeup
  • resizedown
  • resizeupdown
  • resizebottomleft
  • resizetopleft
  • resizebottomright
  • resizetopright
  • notallowed
  • poof
  • wait
  • countinguphand
  • countingdownhand
  • countingupanddownhand
  • spinning
  • help
  • bucket
  • cancel
  • eyedrop
  • eyedrop-full

以上はmacで利用できるカーソルです。

underline

underline=Trueで下線を引くことができます。

デフォルトでは下線は表示されませんが、明示的に下線を非表示にしたい時はunderline=Falseにしてください。

ラベルを使いこなそう!

Tkinterでラベルを作成する方法について解説しました。

ぜひご自身のGUI作成に役立ててください!