tkinter

【Python/tkinter】LabelFrame(ラベルフレーム、グループボックス)

複数のウィジェットをラベル付きの枠線で囲うウィジェットをLabelFrame(ラベルフレーム)と言います。

tkinter以外ではグループボックスなどと言われます。

このラベルフレームは何かの設定値など、共通の目的を持ったウィジェットを一つにまとめるときに用いられます。

基本的な使い方はFrameに似ていますが、Frameに枠線とラベルが追加されています。

(ラベルフレームの実行例)

Python tkinter LabelFrame グループボックス

(サンプルプログラム)

import tkinter as tk

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

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

        #--------------------------------------------------------
        # ラベルフレーム1の作成
        self.labelframe1 = tk.LabelFrame(self.master, text = "フレーム1")
        
        # ラジオボタンに設定する値
        self.radio_value1 = tk.IntVar(value = 0)

        # ラジオボタンの作成
        self.radio1 = tk.Radiobutton(self.labelframe1, text = "項目1", variable = self.radio_value1, value = 0)
        self.radio2 = tk.Radiobutton(self.labelframe1, text = "項目2", variable = self.radio_value1, value = 1)
        self.radio3 = tk.Radiobutton(self.labelframe1, text = "項目3", variable = self.radio_value1, value = 2)
        self.radio1.pack()
        self.radio2.pack()
        self.radio3.pack()

        # ラベルの配置
        self.labelframe1.pack()

        #--------------------------------------------------------
        # ラベルフレーム2の作成
        self.labelframe2 = tk.LabelFrame(self.master, text = "フレーム2", labelanchor = "n", width = 200, height = 100)
        self.labelframe2.propagate(False) # 幅と高さを指定する場合はこの設定が必要

        # ラジオボタンに設定する値
        self.radio_value2 = tk.IntVar(value = 1)

        # ラジオボタンの作成
        self.radio4 = tk.Radiobutton(self.labelframe2, text = "項目1", variable = self.radio_value2, value = 0)
        self.radio5 = tk.Radiobutton(self.labelframe2, text = "項目2", variable = self.radio_value2, value = 1)
        self.radio6 = tk.Radiobutton(self.labelframe2, text = "項目3", variable = self.radio_value2, value = 2)
        self.radio4.pack(anchor = tk.W)
        self.radio5.pack(anchor = tk.W)
        self.radio6.pack(anchor = tk.W)

        # ラベルの配置
        self.labelframe2.pack()
        #--------------------------------------------------------


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

構文

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

オプション

オプション名 説明
bd 枠線の太さを指定します。(borderwidthと同じ)
borderwidth bdと同じ
bg 背景色を指定します。(backgroundと同じ)
background bgと同じ
cursor ウィジェット上にマウスポインタがある際のカーソルの種類を指定します。
(参考)https://tkdocs.com/shipman/cursors.html
font ラベルのフォントを指定します。
height フレームの高さを画素数で指定します。
highlightbackground
highlightcolor
highlightthickness
labelanchor ラベルの表示位置を指定します。
【設定値】e, en, es, n, ne, nw, s, se, sw, w, wn, ws
labelwidget ラベルの代わりにButtonなどのウィジェットを指定します。
padx フレームの内側に配置するウィジェットまでの横方向の隙間を指定します。
【初期値】0
pady フレームの内側に配置するウィジェットまでの縦方向の隙間を指定します。
【初期値】0
relief フレームのスタイルを指定します。
【設定値】tk.RAISED, tk.GROOVE, tk.SUNKEN, tk.RIDGE, tk.FLAT
takefocus
text ラベルの文字列を指定します。
width フレームの幅を画素数で指定します。

補足説明

ラベルフレームのサイズ(幅と高さ)指定

widthとheightの値を指定しても、デフォルト状態ではLabelFrameのサイズは変わらず、LabelFrameに配置したウィジェットの大きさに合わせて自動調整されます。

この自動調整を無効にするには ラベルフレームオブジェクト.propagate(False) を実行します。

labelanchorについて

labelanchorでラベルの位置を指定します。

実際にラベルが表示される位置は下図を参照してください。

Python tkinter LabelFrame グループボックス

labelwidgetについて

labelwidgetはラベルの代わりにウィジェットを配置することができます。

下図はラベルの代わりにButtonを配置した例になります。

Python tkinter LabelFrame グループボックス

labelwidget = ウィジェットのオブジェクト

のように指定します。

コメント

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