【Python/Tkinter】Label(ラベル)の使い方:文字フォント・サイズ・色・配置の設定

/

【Python/Tkinter】Label(ラベル)の使い方:文字フォント・サイズ・色・配置の設定

PythonでGUIアプリケーションを作る際に使用するのは、もちろんTkinterですよね。
基本的なTkinterの使い方については以下記事をご覧ください。

Tkinterで文字を表示させるにはLabel(ラベル)ウィジェットを使います。

Wordで文字を書いてフォントやサイズ・太さ・色などを変更して文字の装飾するように、Tkinterのラベルでも同様にフォント・サイズ・太さなどを設定して、文字を装飾できます。

GUIアプリケーションでは、ユーザーが使いやすく、そしてわかりやすいユーザーインターフェースが求められます。

そのため文字の装飾は、非常に重要なファクターとなります。

本記事では、TkinterのLabel(ラベル)の文字フォント・サイズ・色などの設定方法をご紹介していきます。

作成するサンプルプログラム

GUIアプリを作った際に、現在のアプリのバージョン情報を表示することがあります。

例えば、アプリのメニューバーのバージョン情報をクリックすると、新たにウィンドウが開いてそこに現在のバージョンとCopyright情報が載っているようなイメージです。

今回はそんなバージョン情報が記載された以下のような画面を作成できるようにします。

アプリ作成画面

このサンプルプログラムのソースコードを以下に記します。

import tkinter as tk
import tkinter.ttk as ttk
import tkinter.font as f

def close():
    root.destroy()

if __name__ == '__main__':
    root = tk.Tk()
    root.title("バージョン情報")
    root.geometry("350x150")

    font1 = f.Font(family="Lucida Console", weight="bold", size=8, slant="italic")

    # メインフレームの作成と設置
    frame = tk.Frame(root)
    frame.pack(fill = tk.BOTH, pady=10)

    # 各種ウィジェットの作成
    Title = tk.Label(frame, text="アプリ名", font=("MSゴシック", "20", "bold"))
    copy_label = tk.Label(frame, justify="center",text="Copyright(C) 2020-2020 OFFICE54 Ltd. \nAll rights reserved.")
    copy_label["font"] = font1
    button = ttk.Button(frame, text="OK", command=close)
    notice_label = tk.Label(frame, text="*This app is made by Tkinter*", fg="blue", width="100",anchor=tk.E)

    # 各種ウィジェットの設置
    Title.pack()
    copy_label.pack()
    button.pack(pady=10)
    notice_label.pack()

    root.mainloop()

ぜひ上記コードをコピーして、実際に動かしてみてください。

それではラベルの文字装飾の方法を解説していきます。

文字フォント・サイズ・太さの設定

ラベルのオプションから設定

ラベルウィジェットを生成する際に、オプション引数でfont属性を使用することで、文字フォントやサイズ・太さを指定することができます。

font=(フォント名, 文字サイズ, 太さ)

文字の太さを太字にする場合は「bold」、通常(デフォルト)は「normal」です。

Title = tk.Label(frame, text="アプリ名", font=("MSゴシック", "20", "bold"))

上記ではフォントタイプを「MSゴシック」、文字サイズ「20」、太文字でラベルウィジェットを設定しています。

フォントオブジェクトから設定

ラペルウィジェットのオプションで設定する以外にも、フォントオブジェクトを事前に作成しておき、生成したラベルウィジェットに作成しておいたフォントオブジェクトを指定する方法もあります。

これは、多くのラベルウィジェットを作成し、それらに同様の設定を反映したいときに便利な方法です。

フォントオブジェクトの作成にはtkinter.font.Fontクラスを使用します。

フォントオブジェクトのオプション引数の一覧を以下に示します。

  • family(フォントタイプ)
  • size(サイズ)
  • weight(太さ)
  • slant(斜体:roman or italic)
  • underline(下線:normal or underline)
  • overstrike(取り消し線:normal or overstrike)

以下プログラムのように事前にフォントオブジェクトを作成し、その際に引数で文字の装飾を指定しておきます。

import tkinter.font as f
font1 = f.Font(family="Lucida Console", weight="bold", size=8, slant="italic")
‥‥‥
copy_label["font"] = font1

文字色の設定

ラベルウィジェットのオプション引数にfg属性を指定して文字色の設定を行います。
ちなみにfgはforegroundの略です。

fgにカラーコードか色の名前を指定することで、ラベル文字の色を変更することができます。

notice_label = tk.Label(frame, text="*This app is made by Tkinter*", fg="blue", width="100",anchor=tk.E)

また似た引数にbg(background)属性があります。
これはラベルの背景色を変更する際に使用します。

文字の配置の設定

ラベルのオプションから設定

ラベルのオプション引数にanchorを指定することで、ラベルを左・真ん中・右寄せ等を指定することができます。

  • tkinter.CENTER:中央
  • tkinter.N:上
  • tkinter.S:下
  • tkinter.W:左
  • tkinter.E:上
  • tkinter.NW:左上
  • tkinter.NE:右上
  • tkinter.SW:左下
  • tkinter.SE:右下

NやS・E・Wは方角を表しているので覚えやすいですね。

anchorを指定しない場合、デフォルトでtkinter.CENTERが指定されます。

notice_label = tk.Label(frame, text="*This app is made by Tkinter*", fg="blue", width="100",anchor=tk.E)

ここで注意なのが、ラベルウィジェット内の文字をどこに配置するかをanchorは指定します。
そのためラベルウィジェットの大きさ(幅や高さ)に文字の位置は依存するということです。

またテキストが複数行になる場合は、justify属性で位置を指定することができます。

copy_label = tk.Label(frame, justify="center",text="Copyright(C) 2020-2020 OFFICE54 Ltd. \nAll rights reserved.")

オプション一覧

以下にラベルウィジェット生成時に指定できるオプション引数の一覧を記します。
※以下はimport tkinter as tkとする

属性 説明
anchor テキストの配置位置を指定 tk.CENTER(中央)、tk.W(左)、tk.E(右)、tk.N(上)、tk.S(下)、tk.NW(左上)、tk.SW(左下)、tk.NE(右上)、tk.SE(右下)
bg or background 背景色 カラーコードまたは色名
bd or borderwidth ボーダーの幅を指定 数値(ピクセル)
cursor カーソルの形を指定 arrow, dotなど
font フォントタイプ、文字サイズ、太さを指定 フォント名、文字サイズ、太さ
fg or foreground フォントの色を指定 カラーコードまたは色名
height ラベルの高さ 数値
width ラベルの幅 数値
image ラベルに貼る画像ファイルを指定 画像へのパス
compound ラベルに画像を貼る場合のテキストの位置 top,center,bottom,left,right
justify 複数行テキストの寄せ位置 center(デフォルト),left,right
padx 枠とテキストとの間の横の空白 数値
pady 枠とテキストとの間の縦の空白 数値
relief ラベル枠を指定 flat(デフォルト),raised,sunken,groove,ridge
takefocus フォーカスの指定 0(ない),1(ある)
text 表示する文字列を指定 文字列
underline アンダーライン True または False
wraplength 複数行の場合の改行幅 数値

関数を紐づける(bind)

Buttonウィジェットのオプション引数commandのように、Labelウィジェットに対して関数とイベント(操作)を紐づけることができます。
例えばLabelがクリックされたら紐づけている関数を呼び出してなにかしらの操作を行ったり、クリックされたLabelの背景色を変更するなどができます。

このようにLabelウィジェットに関数とイベントを紐づけるにはbind()メソッドを使用します。

詳しいbind()メソッドの使用方法は以下記事をご参照ください。

まとめ

PythonでGUIアプリを作成するためのTkinter。
その中で文字を表示するためのラベルの使い方は詳しくわかりましたか?

ユーザーが使いやすく、わかりやすいインターフェースを作るために必ずマスターしておく必要がある要素なので、ぜひ使えるようになってください。