はじめに
左にボタンや入力欄を置いて値を入力し、右に結果を表示するケースは頻発しそうなので、やり方をまとめる
実装サンプル
import PySimpleGUI as sg
leftFrame = sg.Frame('leftFrame', [[sg.Text("left")]], size=(300,500))
rightFrame = sg.Frame('rightFrame', [[sg.Text("right")]], size=(300,300))
layout = [
[
leftFrame, rightFrame
],
[
sg.Button('Exit')
]
]
window = sg.Window('sample', layout, resizable=True)
while True:
event, values = window.read()
#clese btn
if event in (sg.WIN_CLOSED, 'Exit'):
break
window.close()
上のコードを実行する
イメージとして、配列がレコードになっていて、配列の値ひとつひとつがフィールドになる。
,
で改行されて、ひとつ下に行を挿入する(コードだと[sg.Button('Exit')]の部分)イメージ。
なお、デフォルトだとrightFrameが中央寄せになってしまうが、上寄せで使いたいことの方が多いと思う。その場合は
vertical_alignment="top"
を指定する。なお、このvertical_alignmentの指定にはenumでAlign.Top的な指定はできず、stringで直接指定しないといけない。t,c,rのように一文字もいけるらしいが、ぱっと見わかりにくそうなのできっと使わない方が良さげ
vertical_alignment: Place the Frame at the 'top', 'center', 'bottom' of the row (can also use t,c,r). Defaults to no setting (tkinter decides)
rightFrame = sg.Frame('rightFrame', [[sg.Text("right")]], size=(300,300), vertical_alignment="top")
おわりに
配列一つがレコード、改行==配列追加と覚えておくと頭の中で整理しやすいので、そのように覚えておく