messyなkitchenなブログ

ただひたすらに散らかった台所や人生やその他を晒す。

MENU

PySimpleGUI をさわってみる #1

はじめに

業務でちょっとしたツールを作る必要がでてきました。
ちなみに使用している開発言語は Python

このツールは PC 上で誰でも使う想定なので、GUI はあったほうがいいよね。

ということで調べてみたところ、比較的容易に GUI を作れる PySimpleGUI というモジュールが存在するようです。

そこで、PySimpleGUI を使って GUI を作る練習をしていきます。

試してみる

練習用の GUI を作ったった

f:id:messykitchen:20200513184726p:plain

最初の画面。名前の横のテキストボックスへ、何か文字を入力します。

f:id:messykitchen:20200513184811p:plain

入力ボタンをクリック。

f:id:messykitchen:20200513184842p:plain

ポップアップウインドウが出現しました。

ソースコード

ソースコードは、次のとおり。

import PySimpleGUI as sg

# レイアウトを定義する
layout = [[sg.Text('Python GUI')],
          [sg.Text('名前'), sg.InputText('', key='-NAME-')],
          [sg.Button('入力', key='-INPUT-')]]

# ウインドウを作成する
window = sg.Window('PySimpleGUI #1', layout)

# イベントループ
while True:
    event, values = window.read()
    
    if event is None:
        break
        
    elif event == '-INPUT-':
        name = window['-NAME-'].get()
        sg.popup('こんにちは、' + name + '!')

window.close()

処理の流れ

モジュールをインポートします

PySimpleGUI を使うんだってばよ。

import PySimpleGUI as sg

部品の配置を定義します

GUIを構成する部品を、エレメントと呼んだり、ウィジェット とと呼んだりします。
PySimpleGUI では、エレメント。

エレメントの配置は、リスト で定義します。

layout = [[一行目],
          [二行目],
          ...
         ]

エレメントの詳細については、次回以降の記事で整理します(の予定かも)。

ウインドウを作成します

window = sg.Window(ウインドウのタイトル, レイアウトのリスト)

イベントを拾います

エレメントを操作するとイベントが発生します。
イベントはウインドウから読み出せます。
イベントの読み出しを、ループで処理します。

event, values = window.read()

入力ボタンがクリックされた場合、
変数 event には エレメントに対応する key が、
変数 values には ウインドウ上のエレメントが持つ値 が入っています。

print(event)
print(values)
# -INPUT-
# {'-NAME-': '10fu'}

ちなみに key を指定しない場合は、ボタンの表示文字列が event に入ってきます。

[sg.Button('入力')]
...

print(event)
# 入力

終了時にウインドウを閉じます

window.close()

終わりに

PySimpleGUI を使って、Python で作ったコードに GUI を付けることができそうです。
もう少し PySimpleGUI の使い方を調べて、期待するものが作れそうか検討していきます。

調べたことは自分用メモとして整理して記事にしたい考えです、今のところ。