機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【Python+Tkinter】【初心者】フレームの左右に伸ばそう

フレームを左右に伸ばそう

■はじめに

前回、フレームを利用してラジオボタンを綺麗にレイアウトする方法を紹介しました。(ここまでの進捗は次の3つの記事に記載してあります)

f:id:stjun:20190709223054p:plain

stjun.hatenablog.com

stjun.hatenablog.com

stjun.hatenablog.com

 このままでも良いのですが、下段「その他」のフレームの両側に空白があるのが気になります。

そこで今回、フレームを左右に伸ばす方法を紹介します。 

 

■コード

忙しい方やpythonのコードを自力で読んで理解できる方向けに、先にコードを載せます。動作環境はAnaconda(python3.7)です。

#フレームの大きさを自動で指定する方法
import tkinter as tk

#ウインド画面の作成
root=tk.Tk()
root.title("フレームの使い方")

#フレームの作成
#フレーム1(左上)
frame=tk.LabelFrame(root,text="ラジオボタン1",foreground="green")
frame.grid(row=0,column=0)
#フレーム2(右上)
frame_1=tk.LabelFrame(root,text="ラジオボタン2",foreground="green")
frame_1.grid(row=0,column=1)
#フレーム3(下)
frame_2=tk.LabelFrame(root,text="その他",foreground="green")
frame_2.grid(row=1,columnspan=2,sticky="we")

#ラジオボタンの作成(フレーム1に作成)
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()

#ラジオボタンの作成(フレーム2に作成)
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()

#テキストの作成(フレーム3に作成)
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))

#ボタンの作成(フレーム3に作成)
Button=tk.Button(frame_2,text="判定",command=check)
Button.pack()

#画面の表示
root.mainloop()

このコードを実行すると、次のようにその他の両側の隙間がなくなりレイアウトが整えられます。

f:id:stjun:20190713145243p:plain

■説明

「フレームの作成方法」や「部品(ラジオボタンやテキストなど)をどのフレーム内に表示するか指定する方法」は以前の記事で紹介しているため省略します。

前回、grid()を使ってフレームの位置関係を指定する方法を紹介しました。

#フレーム1(左上) 
frame=tk.LabelFrame(root,text="ラジオボタン1",foreground="green") frame.grid(row=0,column=0)

今回はそれにsticky="we"という項目を付け足しました。

#フレーム1(左上)
frame=tk.LabelFrame(root,text="ラジオボタン1",foreground="green") frame.grid(row=0,column=0,sticky="we")

stickyとは「ねばつく」という意味で、その名の通りフレームの端部がウィンドの枠とくっついているようなイメージになります。

stickyのカッコの中には「"nsew"」を指定でき、それぞれ「北、南、東、西」の頭文字であり、フレームの「上、下、右、左」に値します。

今回は左右に広げたかったのでsticky="we"と指定しています。

 

■最後に

フレームは非常に便利で、フレームを上手く使えばレイアウトを綺麗にできるのでぜひ活用していきましょう。