フレームを左右に伸ばそう
■はじめに
前回、フレームを利用してラジオボタンを綺麗にレイアウトする方法を紹介しました。(ここまでの進捗は次の3つの記事に記載してあります)
stjun.hatenablog.com
stjun.hatenablog.com
stjun.hatenablog.com
このままでも良いのですが、下段「その他」のフレームの両側に空白があるのが気になります。
そこで今回、フレームを左右に伸ばす方法を紹介します。
■コード
忙しい方やpythonのコードを自力で読んで理解できる方向けに、先にコードを載せます。動作環境はAnaconda(python3.7)です。
import tkinter as tk
root=tk.Tk()
root.title("フレームの使い方")
frame=tk.LabelFrame(root,text="ラジオボタン1",foreground="green")
frame.grid(row=0,column=0)
frame_1=tk.LabelFrame(root,text="ラジオボタン2",foreground="green")
frame_1.grid(row=0,column=1)
frame_2=tk.LabelFrame(root,text="その他",foreground="green")
frame_2.grid(row=1,columnspan=2,sticky="we")
var=tk.IntVar()
var.set(0)
radio_0=tk.Radiobutton(frame,value=0,variable=var,text="ラジオボタン0")
radio_0.pack()
radio_1=tk.Radiobutton(frame,value=1,variable=var,text="ラジオボタン1")
radio_1.pack()
radio_2=tk.Radiobutton(frame,value=2,variable=var,text="ラジオボタン2")
radio_2.pack()
radio_3=tk.Radiobutton(frame,value=3,variable=var,text="ラジオボタン3")
radio_3.pack()
radio_4=tk.Radiobutton(frame_1,value=4,variable=var,text="ラジオボタン4")
radio_4.pack()
radio_5=tk.Radiobutton(frame_1,value=5,variable=var,text="ラジオボタン5")
radio_5.pack()
radio_6=tk.Radiobutton(frame_1,value=6,variable=var,text="ラジオボタン6")
radio_6.pack()
radio_7=tk.Radiobutton(frame_1,value=7,variable=var,text="ラジオボタン7")
radio_7.pack()
text_str=tk.StringVar()
text_str.set("ボタンを押して下さい")
text=tk.Label(frame_2,textvariable=text_str)
text.pack()
def check():
text_check=var.get()
text_str.set(str(text_check))
Button=tk.Button(frame_2,text="判定",command=check)
Button.pack()
root.mainloop()
このコードを実行すると、次のようにその他の両側の隙間がなくなりレイアウトが整えられます。
■説明
「フレームの作成方法」や「部品(ラジオボタンやテキストなど)をどのフレーム内に表示するか指定する方法」は以前の記事で紹介しているため省略します。
前回、grid()を使ってフレームの位置関係を指定する方法を紹介しました。
frame=tk.LabelFrame(root,text="ラジオボタン1",foreground="green") frame.grid(row=0,column=0)
今回はそれにsticky="we"という項目を付け足しました。
frame=tk.LabelFrame(root,text="ラジオボタン1",foreground="green") frame.grid(row=0,column=0,sticky="we")
stickyとは「ねばつく」という意味で、その名の通りフレームの端部がウィンドの枠とくっついているようなイメージになります。
stickyのカッコの中には「"nsew"」を指定でき、それぞれ「北、南、東、西」の頭文字であり、フレームの「上、下、右、左」に値します。
今回は左右に広げたかったのでsticky="we"と指定しています。
■最後に
フレームは非常に便利で、フレームを上手く使えばレイアウトを綺麗にできるのでぜひ活用していきましょう。