![見出し画像](https://assets.st-note.com/production/uploads/images/46059464/rectangle_large_type_2_feaa3ce045396d410af6a58ee072140d.png?width=1200)
PySimple GUI でテキスト表示・テキストボックス・ボタン作成
この記事では、Python で GUI を作成できるライブラリ PySimple GUI の基本的な操作として、テキスト表示、テキストボックス作成、ボタン作成について書いていきます。
Python で GUI を作成できるライブラリについては、標準で搭載されている Tkinter や他にもいくつかライブラリがあります。私自身、Tkinter を少し触れたことがあるのですが、少々扱いずらい印象でした。その理由としてはソースコードからGUI画面のイメージをしにくい点があるのではないかと考えています。その点、PySimple GUI はソースコード1行がGUI画面の1行に相当するようコーディングできるので、まだまだ初心者の私にとっては Tikinter よりも PySimple GUI の方が扱いやすいと感じました。
そんな PySimple GUI の使い方を以降で書いていきます。
環境
・windows 10(64bit)
・python 3.8.2(32bit版)
・エディタ Visual Studio Code 1.53.1
ライブラリインストール
コマンドプロンプトを起動して以下のコマンドを入力すればpipでライブラリをインストールすることができます。
py -m pip install pysimplegui
テキスト表示・テキストボックス・ボタン
基本的なウィンドウ作成として、テキスト表示、テキストボックス作成、ボタン作成をします。
ライブラリをインポートし、レイアウト「layout 」にGUI画面1行に入れたい内容をカンマ「,」で区切りながら書いていきます。カンマで区切ったコード1行がGUI画面の1行に相当するので、カンマで改行してコーディングしていくと実際のGUI画面をソースコードからイメージしやすくなると思います。
レイアウトの内容を書いたあとは、ウィンドウオブジェクトの作成、イベントのループ処理を作成します。ここでは、GUI画面の×ボタンが押されれば「break」にて「while」処理から抜けて「window.close( )」が実行されます。
# =================================================
# ライブラリインポート
# =================================================
import PySimpleGUI as gui
# =================================================
# ウィンドウレイアウト
# =================================================
layout = [
[gui.Text('テキストボックスに入力してください')],
[gui.InputText()],
[gui.Button('OK')]
]
# =================================================
# ウィンドウ処理
# =================================================
# ウィンドウオブジェクトの作成
window = gui.Window('PySimpleGUI', layout, size=(400, 200))
# イベントのループ
while True:
# イベントの読み込み
event, values = window.read()
# ウィンドウの×ボタンが押されれば終了
if event == gui.WIN_CLOSED:
break
# ウィンドウ終了処理
window.close()
実行結果
上記のコードを実行すると以下の画面が出力されます。
ポイントは「layout 」に記載したコード1行がGUI画面の1行になっている点です。今回はボタンをクリックしたときの処理を入れていないので「OK」ボタンをクリックしても何も起こりませんが、基本的なウィンドウ作成として、テキスト表示、テキストボックス作成、ボタン作成はこのように行うことができます。
おわりに
個人的には、ちょっとしたGUIを簡易的に作りたい場面で PySimple GUI はとても扱いやすいと思います。もう少し使い方を勉強したら note に書いていきたいと思います。
何かお役に立てたら、サポートしていただけると嬉しいです!モチベーションを高めて、アウトプットしていきます!