LoginSignup
1
0

PySimpleGUIでフレームを横並びにする

Posted at

はじめに

左にボタンや入力欄を置いて値を入力し、右に結果を表示するケースは頻発しそうなので、やり方をまとめる

実装サンプル

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()

上のコードを実行する
image.png
イメージとして、配列がレコードになっていて、配列の値ひとつひとつがフィールドになる。
,で改行されて、ひとつ下に行を挿入する(コードだと[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")

image.png

おわりに

配列一つがレコード、改行==配列追加と覚えておくと頭の中で整理しやすいので、そのように覚えておく

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0