はじめに
業務でちょっとしたツールを作る必要がでてきました。
ちなみに使用している開発言語は Python。
このツールは PC 上で誰でも使う想定なので、GUI はあったほうがいいよね。
ということで調べてみたところ、比較的容易に GUI を作れる PySimpleGUI というモジュールが存在するようです。
そこで、PySimpleGUI を使って GUI を作る練習をしていきます。
試してみる
練習用の GUI を作ったった
最初の画面。名前
の横のテキストボックスへ、何か文字を入力します。
入力
ボタンをクリック。
ポップアップウインドウが出現しました。
ソースコード
ソースコードは、次のとおり。
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 の使い方を調べて、期待するものが作れそうか検討していきます。
調べたことは自分用メモとして整理して記事にしたい考えです、今のところ。