【Python/tkinter】Frameの使い方

tkinter frameの使い方
スポンサーリンク
スポンサーリンク

PythonでGUIアプリを作成できるモジュール tkinter(ティーキンター)の Frame(フレーム) について解説します。

サンプルコードはモジュールのインポートを from tkinter import * としています。
関数を呼び出す際にパッケージ名の接頭辞 (tk.Frame()tk.)を省略できるのでおすすめです。

スポンサーリンク

Frameとは

Frame とは四角形のコンテナ(入れ物)です。
この Frame の中に Widget(ラベル・ボタン)などを配置することでグループ化します。

tkinter Frame

Frame のオプション一覧

Frame で指定可能なオプション一覧です。

オプション説明値の形式
widthフレームの幅ピクセル値
heightフレームの高さピクセル値
bg (background)背景色色名または16進数カラーコード
relief枠線タイプ(デフォルト値はflat)
bd とセットで設定
flat, solid, groove, raised, ridge, sunken
bd (borderwidth)枠線の幅(デフォルトは2px)
relief とセットで設定
ピクセル値
padxフレーム内に水平方向のスペースを追加ピクセル値
padyフレーム内に垂直方向のスペースを追加ピクセル値
cursorマウスオーバー時のカーソルタイプカーソルタイプ
highlightthicknessフォーカスハイライト枠線幅ピクセル値
highlightbackground非フォーカス時のハイライト枠線色色名または16進数カラーコード
highlightcolorフォーカス時のハイライト枠線色色名または16進数カラーコード

幅・高さ(width, height)

Frame の幅、高さは width, height をピクセルで指定します。

tkinter window

背景色(bg)

Frame の背景色 bg は、色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典

tkinter bg

枠線(relief, bd)

relief は Frame の枠線スタイル、bd で枠線の太さを指定します。

枠線タイプとサンプルです。

サンプルタイプ
flat
solid
groove
raised
ridge
sunken

フレーム内スペース(padx, pady)

padx, pady で Frame 内に水平・垂直方向のスペースを設定できます。

設定すると右側のように Widget に対してスペースが確保されます。

カーソル(cursor)

cursor を指定する事で、Frameにマウスオーバーした時にマウスカーソルのアイコンを変更できます。

tkinter cusor

カーソルのタイプは全部で75個ありますが、実際に使えそうなものは限られています。
以下がサンプルになります。全タイプを確認したい場合はこちらのサイトで確認できます。

アイコンタイプ
arrow
center_ptr
circle
crosshair
draft_large
draft_small
left_ptr
hand1
hand2
tcross
top_left_arrow
X_cursor

フォーカスハイライト

Frameのフォーカス状態に応じて枠をハイライトします。

サンプルでは、非フォーカス時 highlightbackground に青、フォーカス時 highlightcolor に赤を設定しています。線の幅 highlightthickness は共通設定です。

ハイライトの色は、色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典

フォーカスは「Tab」キーで選択可能な Widget にのみ移ります。選択不可のラベル等にはフォーカスできません。

tkinter highlight

幅・高さを固定(propagate)

Frame のサイズを指定しても widget を配置すると、下図のようにwidget に合わせて自動的に伸縮してしまいます。(分かりやすいようにFrame に枠線を付けてます)

tkinter propagate


指定したサイズで Frame を固定したい場合は frame.propagate(False) を指定します。

tkinter propagate


他にもtkinterの使い方を解説しています。
・関連記事:PythonでGUIアプリを作成する(tkinter)
・関連記事:【Python/tkinter】Widgetの配置(grid)
・関連記事:【Python/tkinter】Widgetの配置(pack)
・関連記事:【Python/tkinter】Widgetの配置(place)