tkinter

【Python/tkinter】Label(ラベル)

tkinterでラベルの作成のサンプルを以下に示します。

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

        self.master.title("ラベルの作成")     # ウィンドウタイトル
        self.master.geometry("300x100")       # ウィンドウサイズ(幅x高さ)

        #--------------------------------------------------------
        # ラベルの作成
        self.label = tk.Label(self.master, text = "ラベルの文字")
        # ラベルの配置
        self.label.pack()
        #--------------------------------------------------------

if __name__ == "__main__":
    root = tk.Tk()
    app = Application(master = root)
    app.mainloop()

(実行画面)

Python tkinter Label

構文

ラベルオブジェクト = tk.Label(親ウィジェット, オプション1 = 設定値, オプション2 = 設定値,・・・)

オプション

オプション名 説明
activebackground クリックされたときの背景色を指定します。
activeforeground クリックされたときの文字色を指定します。
anchor 文字の配置位置を指定します。
【設定値】tk.N, tk.S, tk.W, tk.E, tk.NW, tk.NE, tk.SW, tk.SE, tk.CENTER
background 背景色を指定します。
bd 枠線の太さを指定します。
ただし、初期状態では枠線が表示されていないため、reliefで枠線のスタイルを指定する必要があります。(borderwidthと同じ)
bg 通常時の背景色を指定します。
bitmap モノクロのBitmapを指定します。
(参考)https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/bitmaps.html
borderwidth bdと同じ
compound 文字と画像の両方を表示する際に、文字に対して画像の表示位置を指定します。
【設定値】tk.LEFT, tk.RIGHT, tk.BOTTOM, tk.TOP, tk.CENTER
cursor ウィジェット上にマウスポインタがある際のカーソルの種類を指定します。
(参考)https://tkdocs.com/shipman/cursors.html
disabledforeground stateオプションで無効(DISABLED)に設定している際の文字色を設定します。
fg 表示する文字色を指定します。(foregroundと同じ)
font 表示する文字のフォントを指定します。
foreground fgと同じ
height ラベルの高さを文字数で指定します。
画像を配置した時は、画素数の指定になります。
highlightbackground
highlightcolor
highlightthickness
image 表示する画像を指定します。
justify 複数行の文字のときの、文字寄せ方向を指定します。
【設定値】左寄せ(tk.LEFT), 中央寄せ(tk.CENTER), 右寄せ(tk.RIGHT)
padx 文字の両側の隙間を指定します。
pady 文字の上下の隙間を指定します。
relief ラベルの枠線のスタイルを指定します。
【設定値】tk.RAISED, tk.GROOVE, tk.SUNKEN, tk.RIDGE, tk.FLAT
state
takefocus
text 表示する文字を指定します。
textvariable StringVarクラスオブジェクトを指定し、ラベルの文字列を指定します。
underline 指定した順番(先頭から0始まり)の文字にアンダーラインを付加します。
width ラベルの幅を文字数で指定します。
wraplength 文字の折り返し幅を指定します。

 

ラベルはプログラムの各種情報を表示するのに、プログラムの実行中に文字列を変更する場合が多いかと思います。

ラベルの文字を変更する方法は主に下記の2通りあります。

  • textvariableオプションのStringVarを指定し変更する方法
  • ラベルのtextオプションを直接変更する方法

 

textvariableオプションのStringVarを指定し変更する方法

以下のサンプルでは、LabeltextvariableオプションにStringVarを指定し、ボタンのクリック時にラベルの文字列を変更しています。

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

        self.master.title("ラベルの作成")     # ウィンドウタイトル
        self.master.geometry("300x100")       # ウィンドウサイズ(幅x高さ)

        #--------------------------------------------------------
        # ラベルの作成
        self.label_text = tk.StringVar(value = "ラベルの文字") # valueは初期値
        self.label = tk.Label(self.master, textvariable = self.label_text)
        # ラベルの配置
        self.label.pack()
        #--------------------------------------------------------
        # ボタンの作成
        self.button = tk.Button(self.master, text = "ボタン", command = self.button_click)
        # ボタンの配置
        self.button.pack()
        #--------------------------------------------------------

    def button_click(self):
        '''ボタンがクリックされたとき'''
        # ラベル文字の変更方法1
        # StringVarの値を設定する
        self.label_text.set("ボタンがクリックされた")

if __name__ == "__main__":
    root = tk.Tk()
    app = Application(master = root)
    app.mainloop()

(プログラム起動時)

Python tkinter Label

(ボタンクリック後)

Python tkinter Label

 

ラベルのtextオプションを直接変更する方法

以下のサンプルでは、ボタンのクリック時にラベルのtextオプションを直接変更しています。

ただし、textオプションとtextvariableオプションを両方指定することは出来ないので注意してください。

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

        self.master.title("ラベルの作成")     # ウィンドウタイトル
        self.master.geometry("300x100")       # ウィンドウサイズ(幅x高さ)

        #--------------------------------------------------------
        # ラベルの作成
        self.label = tk.Label(self.master, text = "ラベルの文字")
        # ラベルの配置
        self.label.pack()
        #--------------------------------------------------------
        # ボタンの作成
        self.button = tk.Button(self.master, text = "ボタン", command = self.button_click)
        # ラベルの配置
        self.button.pack()
        #--------------------------------------------------------

    def button_click(self):
        '''ボタンがクリックされたとき'''
        # ラベル文字の変更方法2
        # ラベルのプロパティを直接設定する。ただし、textvariableプロパティは設定しないこと
        self.label["text"] = "ボタンがクリックされた"

if __name__ == "__main__":
    root = tk.Tk()
    app = Application(master = root)
    app.mainloop()

(プログラム起動時)

Python tkinter Label

(ボタンクリック後)

Python tkinter Label

コメント

タイトルとURLをコピーしました