memopy

pythonで作ってみました的なブログ

⑤ FrameとLabelFrameの違い【python tkinter sqlite3で家計簿を作る】

⑤ FrameとLabelFrameの違い【python tkinter sqlite3で家計簿を作る】

今回は、FrameとLabelFrameという機能を掘り下げていきたい。
前回の記事では、Buttonのウィジェットをpackメソッドを用いて、画面上に配置したが、packメソッドでは、思った通りの場所にウィジェットを配置できないことが多い。
そのため、Frameというウィジェットを配置する枠を画面上に配置して、その中にウィジェットを入れると簡単にレイアウトできるようになる。

設計図
f:id:memopy:20170528110228p:plain
前回までに作成したGUI
f:id:memopy:20170527213534p:plain

フレーム Frame

# -*- coding:utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title("家計簿アプリ")
root.geometry("300x300")

# フレームの作成(フレームをrootに配置,フレーム淵を2pt,フレームの形状をridge)
frame = tk.Frame(root,bd=2,relief="ridge")
# フレームを画面に配置し、横方向に余白を拡張する
frame.pack(fill="x")

# 作成したフレームにボタン1を配置
button1 = tk.Button(frame,text="入力")
# ボタンを左から配置する
button1.pack(side="left")

# 作成したフレームにボタン2を配置
button2 = tk.Button(frame,text="表示")
# ボタンを左から配置する
button2.pack(side="left")

# 作成したフレームにボタン3を配置
button3 = tk.Button(frame,text="終了")
# ボタンを右から配置する
button3.pack(side="right")

root.mainloop()

仕切りのあるフレームが作成された
f:id:memopy:20170528111550p:plain

Frameのオプション(抜粋)
オプション名 入力型式 説明
background
bg
背景色
borderwidth
bd
integer フレーム枠の幅
padx integer フレーム内の横の余白
pady integer フレーム内の縦の余白
relief flat(デフォルト),
sunken,raised,groove,ridge
フレームの形状
f:id:memopy:20170611094823p:plain
フレームの形状を有効にするためには、必ずborderwidthの値を1以上に設定しなければならない

ラベル フレーム LabelFrame

フレームにラベルを付けたウィジェットも存在する

# -*- coding:utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title("家計簿アプリ")
root.geometry("300x300")

# ラベルフレームの作成(ラベルフレームのtextをmenuに設定)
frame = tk.LabelFrame(root,bd=2,relief="ridge",text="menu")
frame.pack(fill="x")

button1 = tk.Button(frame,text="入力")
button1.pack(side="left")
button2 = tk.Button(frame,text="表示")
button2.pack(side="left")
button3 = tk.Button(frame,text="終了")
button3.pack(side="right")

root.mainloop()

f:id:memopy:20170528113235p:plain

LabelFrameのオプション(抜粋)※フレームからの差分のみ
オプション名 入力型式 説明
text string ラベルに表示するテキスト
labelanchor n,ne,e,se,s,sw,w,nw(デフォルト) ラベルの配置場所
font font_object 文字のフォント

今回はここまで!
質問や記事の間違いがありましたらコメントお願いします。

前の記事
④ Buttonウィジェットの配置【python tkinter sqlite3で家計簿を作る】
次の記事
⑥ LabelとEntryの配置【python tkinter sqlite3で家計簿を作る】