PySimpleGUIとは?
デスクトップアプリを作れるライブラリです。デスクトップアプリといえば標準ライブラリにTkinterというライブラリがあるのですが、そちらよりも記述を簡単にすることができるので積極的にこちらを使っていきましょう。
ちなみに、PySimpleGUIはTkinterのラッパーライブラリなので基本的にTkinterでできることは全てPySimpleGUIでも実現が可能です。
インストール
1 |
pip install pysimplegui |
簡単なサンプル
ものは試しなので実際に動かしてみましょう。
1 2 3 4 5 6 |
import PySimpleGUI as sg # アプリに配置するエレメントを入れていく layout = [[sg.Text("テキスト")]] window = sg.Window("タイトル", layout, size=(300, 150)) window.read() |
プログラムを実行すると以下のアプリケーションが動きます。

1 |
sg.theme("BluePurple") |
レイアウト方法
多重リストでレイアウトします。(上記リストでいえば、listと命名したもの)
例えば、以下のように定義した場合は図のようなレイアウトになります。
1 |
[[A,B,C],[D,E],[F]] |

window
一番外側のベースとなる部品です。
テーマカラーの変更
以下のように指定すればテーマカラーを変更することが可能です。

エレメント
windowの上に乗せるテキストボックスなどの部品のことです。
テキストボックス
1 |
sg.InputText(key="-TEXT1-") |
key
エレメントを示すキーになります。慣習的にハイフンで大文字を括るように記述します。
ボタン
1 |
sg.Button('実行',key='-SUBMIT1-') |
コンボボックス
1 |
sg.Combo([“Java", "JavaSript", "Python"], key="-COMBO1-") |
何かしらボタンを押して入力値を得るサンプル
何かボタンを押してそれをきっかけに入力値を取得するというような実装の場合は無限ループにする必要があります。そうしないとボタン押下したタイミングで戻り値を返して処理が終了してしまいます。また、その場合「閉じるボタン」を押したときも無限ループの対象になってしまうので、閉じるボタンを押した場合だけは無限ループを脱出するというような別の処理が必要になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import PySimpleGUI as sg # アプリに配置するエレメントを入れていく layout = [ [sg.Text("テキスト"), sg.InputText(key="-TEXT1-")], [sg.Button("実行", key="-SUBMIT1-")], ] window = sg.Window("タイトル", layout, size=(300, 150)) # ボタンが押されるたびに戻り値を返すようにしたいので無限ループにする while True: event, values = window.read() # event:ボタンのkey、values:画面からの入力値 if event == "-SUBMIT1-": print(values["-TEXT1-"]) if event == sg.WIN_CLOSED: # 閉じるボタンを押したとき break |

この記事へのコメントはありません。