GUI

Python Tkinter widgets 基本的なウィジェット(1) Frame

フレームとは、単純な四角形として表示されるウィジェットのこと。視覚的にもコーディングレベルでも、UIの整理に役立つ。グリッドのようなジオメトリマネージャのマスターウィジェットとして機能することが多く、フレーム内のスレーブウィジェットを管理する。(tkdocs.com では、マスター、スレーブと説明されていたが、違和感があるようであれば親、子と読み替えても良さそうだ)

frame = ttk.Frame(parent)

また、フレームにはいくつかの表示の設定がある。(後述)

フレームのサイズ

フレーム内のウィジェットのサイズとレイアウトによって決定される。(フレーム自体のコンテンツを管理するジオメトリマネージャによって制御される)

他のウィジェットを含まない空のフレームが必要な場合は、幅や高さの設定オプションを使って明示的にサイズを設定できる。(設定しない場合、非常に小さなフレームになる。)幅や高さは、画面のピクセル数で指定する。(いくつかの接尾語を使って指定することもできる。)また、明示的にサイズを設定(要求)した場合も、最終的にはジオメトリマネージャによって決められるため、期待通りの結果にならない場合は、ジオメトリマネージャを確認すること。

# 350 -> 350ピクセル
# 350c -> 350センチ
# 350m -> 350ミリ
# 350i -> 350インチ
# 350p -> 350プリンタズポイント(1/72インチ)

その他のプロパティ

Padding

ウィジェットの内側に余分なスペースを確保する。設定方法によって、細かく設定できる。フレーム内に他のウィジェットを配置している場合は、全周に渡って余白ができる。

frame['padding'] = 3 # 全周に3ピクセル
frame['padding'] = (2, 5) # 左右に2ピクセル、上下に5ピクセル
frame['padding'] = (5, 10, 20, 15) # 左:5ピクセル、上:10ピクセル、右: 20ピクセル、下: 15ピクセル

Borders

フレームウィジェットの周りにボーダーを描画する。UIの一部がへこんでいる/盛り上がっているように見せることで、周囲から視覚的に分離できる。

ボーダーの太さ:borderwidth(デフォルトは0、ボーダーなし)と、ボーダーの見た目:releaf(デフォルトはflat、その他にはraised、sunken、solid、ridge、grooveがある)を設定できる。

frame['borderwidth'] = 1
frame['relief'] = 'raised'