Loading [MathJax]/extensions/tex2jax.js

2021-11-22

はじめてのPySimpleGUIコード

とりあえずテンプレ的なサンプルコードをアップします。ポイントは以下の通り。

1.GUIウィジェットを先に宣言しとく。宣言しなくてもレイアウトに直接ぶっ込むこともできますが、それはちょっとスマートではないので。。。(個人的見解)

2.ウィジェットのレイアウトはリストで並べる(ここがPySimpleGUIのキモとも言える)。サンプルのように書くことで、並ばせかたを行列のイメージで配置できる。もちろん、frameやcolなどのオブジェクトを利用することでもう少し凝ったこともできるが、この記事では範囲外とする。

3.ウィンドウ表示ループは関数化しておく。下記のshow_window関数がそれに該当する。ここでメインウィンドウを生成して、無限ループでイベントを待つ(read関数)。

4.イベントの種類や、それに付随する情報がread関数の引数で送られてくる。ここで、ウィンドを閉じた時はイベントを抜けて終了するように書いておかないと、後でいろいろ厄介。この記述は必須のテンプレと思われる。

5.本サンプルは、ボタンクリックイベントに対応した記述をしているが、ボタンクリックイベントの識別は、ボタンのラベル名が対応しているらしい。これが嫌な場合は、key属性を使うとよい感じ。

import PySimpleGUI as sg
textlbl = sg.Text('何か入力', size=(10,1))
textBox = sg.InputText('', size=(30,1),key='textBox')
submitButton = sg.Button('入力')
layout = [[textBox], [submitButton]]
# 画面レイアウトを指定
layout = [
[textlbl,textBox],
[submitButton]
]
# ウィンドウを表示する関数
def show_window():
window = sg.Window('はじめてのPySimpleGUI', layout,size=(600,400))
while True: # メインループ
event, values = window.read() # イベントと値を取得
if event == sg.WIN_CLOSED: # ウィンドウが閉じられたら終了(必須)
break # ウィンドウが閉じられたらループを抜ける
elif event == '入力':
sg.popup(values['textBox'])
show_window()


0 件のコメント:

コメントを投稿