0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

20分でまとめる備忘録 PySimpleGUIのメインループ

Posted at

備忘録のきっかけ

Pythonで手早くコンソールを実装しようとしていたら、PySimpleGUIに行き着いた。大まかに使用方法をまとめておきたい

mainとなるwhileループ

import PySimpleGUI as sg

# ウィンドウのレイアウトを定義
layout = [
    [sg.Text('Hello')],
    [sg.Button('OK'), sg.Button('Cancel')]
]

# ウィンドウを作成
window = sg.Window('My Window', layout)

# メインループ
while True:
    event, values = window.read()
    
    # イベントの処理
    if event == sg.WINDOW_CLOSED or event == 'Cancel':
        break
    if event == 'OK':
        sg.popup('OKボタンがクリックされました!')
        
# ウィンドウを閉じる
window.close()
  1. UIに表示したいものをlayoutに定義して、windowを作成する。
    1. layoutは一番外側がレコード、その中がカラムになる構造になっていて、layoutにlayoutを入れることで複雑なレイアウトを作ることもできる(ただし、配置などをうまく整えるのは結構厳しそう)
  2. whileループ内で、layout内で定義したイベント(sg.Button('OK')ならOKがイベントになる)を待ち受ける。ボタンならボタンのクリックで発火するのでなく、常にイベントループ内で監視して処理を決める形を取る。
    1. 処理が複雑になったり入れ子になればなるほど厳しいそう... そもそもきちんと設計を考えて、ネストが深くならないように設計するのが重要そうに見えた

まとめ

input欄ひとつ、ボタン二つくらいの規模だと最速でGUIを組めそう。その代わりリスト内にサムネイルを表示させつつ、選択できるようにして隣のサムネイル欄に何か表示する、みたいなことを考え始めるとこのwhileループないがどうなるんだろうという気がする。割り切って使うのが吉

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?