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

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

MENU

【Python+Tkinter】【初心者】フレームの配置を指定する方法

フレームの配置を指定する方法

2020/01/26追記:プログラミング初心者に向けたpythonの勉強法と手順を記事にしました。

stjun.hatenablog.com

 

■はじめに

前回、フレームを利用してラジオボタンを綺麗にレイアウトする方法を紹介しました。

f:id:stjun:20190707231333p:plain f:id:stjun:20190708225159p:plain

stjun.hatenablog.com

stjun.hatenablog.com

今回、複数のフレームを使用する際にフレームの位置を指定する方法を紹介します。 

 

■コード

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

#ラベルフレームの使い方
import tkinter as tk

#ウインド画面の作成
root=tk.Tk()
root.title("ラジオボタンの使い方")
root.geometry("200x200")

#フレームの作成
#フレーム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)

#ラジオボタンの作成(フレーム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:20190709223054p:plain
このようにフレームでグルーピングしてあげるとユーザーに優しい見た目になります。 

 

■説明

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

これまでフレームが1つの場合、したのようにpack()で中央に配置されるように指定していました。

#フレームの作成
frame=tk.LabelFrame(root,text="ラジオボタン",foreground="green")
frame.pack()

 ただし複数のフレームがある場合、全てpack()で位置指定していまうと、次のように縦長の画面になってしまします。

f:id:stjun:20190709224305p:plain

これはこれで良いですが、今回は横並びに表示したいためgrid()を使います。

#フレームの作成
#フレーム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)

gridのカッコ内のrowは行を、columnは列を表します。つまり、

・grid(row=0,column=0)は1行目の1列目、すなわち左上に表示されます。

・grid(row=0,column=1)は1行目の2列目、すなわち右上に表示されます。

※ここでpythonだと数字は0から始まるので0だと1行目,1だと2行目という風に1づつずれることに気を付けて下さい。

またフレーム3のgrid(row=1,columnspan=2)は2行目で2列分使って表示するという意味です。例えばgrid(row=1,column=1)とすると2行目2列目に配置されます。今回は1行目と2行目に渡って表示させたかったのでcolumnspanを使用しました。

f:id:stjun:20190709224044p:plain

 
■自分が使ってるお得情報の紹介

私はAmazon kindle unlimitedというサービスを1年以上利用しています。

これは月額980円で 和書12万冊以上の電子書籍を読めるサービスです。

ビジネス本、雑誌、漫画、技術本など様々な本を読むことができます。10冊まで端末にダウンロードできるのでネット環境がなくても(オフラインでも)見れます。

なおkindle unlimitedは最初の30日間無料のため、気軽に登録してみて、あまり読みたい本が無ければすぐに解約しても問題ありません。

それか30日内に気になる本を全て読破すれば実質タダです。

ぜひ気になった方はチェックしてみて下さい。

なおkindleにない本等を買う時はamazonギフト券(amazonで使えるポイント)を買い、ポイントで数冊まとめて買った方がお得です。

ギフト券(ポイント)は買ったら10年も有効で、ポイントが付きます。

さらに本をまとめ買い(2冊以上同時に)買うと、ポイントがもらえます。

https://www.amazon.co.jp/b?ie=UTF8&node=5431437051

学生さんであればkindle unlimitedよりも年2450円(月210円程度)で映画見放題、音楽聞き放題、本読み放題の「prime student」がおすすめです。

以下に私がkindle unlimitedで読んだ本を載せておきます。

 

さおだけ屋はなぜ潰れないのか? 身近な疑問からはじめる会計学 (光文社新書)

さおだけ屋はなぜ潰れないのか? 身近な疑問からはじめる会計学 (光文社新書)

  • 作者:山田 真哉
  • 出版社/メーカー: 光文社
  • 発売日: 2005/02/16
  • メディア: 新書
 

 

多動力 (NewsPicks Book) (幻冬舎文庫)

多動力 (NewsPicks Book) (幻冬舎文庫)

 

 

 

■雑誌系

 

MONOQLO (モノクロ) 2020年 02月号 [雑誌]

MONOQLO (モノクロ) 2020年 02月号 [雑誌]

 
家電批評 2020年 1月号 [雑誌]

家電批評 2020年 1月号 [雑誌]

  • 作者: 
  • 出版社/メーカー: 晋遊舎
  • 発売日: 2019/12/03
  • メディア: Kindle
 
ロードバイク完全メンテナンス (エイムック 3544 BiCYCLE CLUB別冊)

ロードバイク完全メンテナンス (エイムック 3544 BiCYCLE CLUB別冊)

  • 作者: 
  • 出版社/メーカー: エイ出版社
  • 発売日: 2016/11/29
  • メディア: ムック
 
繰り返し作りたくなる!  ラク弁当レシピ (エイムック 3680)

繰り返し作りたくなる! ラク弁当レシピ (エイムック 3680)

 
Tarzan(ターザン) 2020年1月23日号 No.779 [内臓脂肪 皮下脂肪すっきり落とす!] [雑誌]

Tarzan(ターザン) 2020年1月23日号 No.779 [内臓脂肪 皮下脂肪すっきり落とす!] [雑誌]

  • 作者: 
  • 出版社/メーカー: マガジンハウス
  • 発売日: 2020/01/04
  • メディア: Kindle
 
DIME(ダイム) 2020年 03 月号 [雑誌]

DIME(ダイム) 2020年 03 月号 [雑誌]

  • 作者: 
  • 出版社/メーカー: 小学館
  • 発売日: 2019/12/16
  • メディア: 雑誌
 

 

 

■最後に

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