こういった思いを持たれている方に向けて、Tkinterでラベルを作成する方法を解説します。
- Tkinterでラベルを作成する方法を理解できる
ラベル作成方法
それでは早速、ラベルの作成方法をご紹介します。
ラベルはtkinter.Label()で作成することができます。
Label()の第一引数にはそのラベルを作成したい場所を指定します。
第二引数以降は、自分が設定したいテキストや背景色など各種情報の設定を行います。
例えばtkinter.Label(root, text=’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()
上記のコードによってラベルの囲い線がピンク色で設定されます。
ラベルをクリックするとfocus_labelという関数が実行されて、ラベルがフォーカスされている状態になります。
するとラベルの囲い線が黄色に変わります。
wraplength
wraplength属性では、ラベル上のテキストが改行されるピクセルサイズを指定することができます。
例えば以下のように記述します。
# ラベルの作成
label_1 = tkinter.Label(root, text='aaaaaaaaaa', wraplength=30)
label_1.pack(pady=10)
上記のコードにより’aaaaaaaaaa’という文字列が自動的に改行されて以下のようになります。
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’にした場合、以下の画像のようになります。
relief=’sunken’にした場合、以下の画像のようになります。
relief=’solid’にした場合、以下の画像のようになります。
relief=’ridge’にした場合、以下の画像のようになります。
relief=’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()
tkinter.PhotoImage()で画像の読み込みを行なって、読み込んだ画像をimage属性に渡すことで画像をラベルとして表示しています。
tkinter.PhotoImageではjpg画像は利用できません。.png画像を指定するようにしましょう。
compound
text属性、image属性とセットで使われるのがcompound属性です。
compound属性ではテキストと画像の配置を指定することができます。
compound=’bottom’とすると以下のようにテキストと画像が配置されます。
UFOの画像がテキストの下側に来ています。
このようにcompound=”ではテキストに対する画像の位置を指定することができます。
compoundで指定できるのは「bottom」「top」「left」「right」「center」の5つになります。
上記画像はcompund=’center’にした例です。
テキストと画像が重なっていてみにくいですが、画像中央にテキストが配置されていることが分かります。
上記はcompound=’right’にした例です。
bitmap
bitmap属性ではOSに標準で用意されている画像を使用することができます。
例えば以下のようにbitmap=’caution’と指定したとします。
tkinter.Label(root, bitmap='caution').pack(pady=30)
以上のコードによって以下のような画面が作成されます。
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作成に役立ててください!