PySimpleGUIの基本的な使用方法

[●テキスト本体（PDF形式53ページ:1.34MB）](http://www.k-techlabo.org/www_python/PySimpleGUI.pdf)　2022/06/10更新
　（[→ミラーサイトからDL](https://ktechlabo.xsrv.jp/www_python/PySimpleGUI.pdf)）[（→GitHubからDL）](https://github.com/nkatsu2018/PubDoc/blob/master/Python/PySimpleGUI.pdf)
－－－－－－－－－－－－－－－－－－－－－

(2020/03/12)
学校でプログラミングを教えています．
教育現場で使用するためのPySimpleGUIのテキストを作りました．

Python用のGUIライブラリはたくさんありますが，PySimpleGUIはおそらく初心者に一番やさしいものだと思います．
Tkinterがベースになっているのも安心感があります．

このテキスト，まだ完成度が低い状態ですが，教育現場で使いならが内容を修正・アップデートしていきます．
無料で公開しますので，ご意見いただけたら嬉しいです．
誤った箇所を見つけられましたら是非ご一報くださいませ．直ちに修正いたします．
（連絡先はテキスト裏表紙にあります）

[紹介ページ](http://www.k-techlabo.org/blog2/?page_id=1481)
テキスト中のサンプルプログラムと素材もここにあります．
　
「これ使いたい」という方は大歓迎です．ご意見をいただきながら完成度を高めて行きたいです．
特に学校でプログラミングの指導をしておられる先生方に使っていただけたらと思います．現場から上がってきた要求やご指摘などいただけましたら幸いです．（可能な限りテキストに反映します）

本書はPySimpleGUIに関する内容に限っています．
Python言語については[こちらでテキストを配布](https://qiita.com/KatsunoriNakamura/items/b465b0cf05b1b7fd4975)しています．

## 補足（更新に関すること，ご案内など）
－－－－－－－－－－－－－－
【補足】(2022/06/11)
　誤植を修正しました．スピナーの図のキャプションが誤っておりました．ご指摘くださいましたt.y.様，どうもありがとうございます．

－－－－－－－－－－－－－－
【補足】(2021/01/22-23)
　Canvasウィジェットの基本的な解説を入れました．
　Columnウィジェットの使い方の部分に加筆．ウィジェット配置の縦方向の微調整に応用できます．
　matplotlibで描いたグラフをレイアウト中に埋め込む方法について解説を入れました．
　Tkinterのウィジェットとの対応に関する基本的な説明を載せました．

－－－－－－－－－－－－－－
【補足】(2020/08/25-30)
　図のキャプションの誤りを1箇所修正しました．
　テキストのタイトルを若干変えました．
　その他，いろいろアップデートしました．

　PySimpleGUIの改訂が進んで，かなりバグも減ってきたようですね．実用性も高くなってきた感じがあります．そろそろこのテキストもオーバーホールしようかと考え始めております．

---
###目次
1　はじめに　---　1　
2　導入　---　1　
　2.1　使用方法の概略　---　1　
　　2.1.1　ウィジェットの配置　---　1　
　　2.1.2　イベントループ　---　2　
　　2.1.3　GUIプログラムの終了　---　2　
　　2.1.4　サンプルに沿った説明　---　2　
　　　2.1.4.1　ウィジェットのサイズ設定　---　3　
　　　2.1.4.2　デザインテーマの設定　---　3　
　　　2.1.4.3　ウィジェットのイベントハンドリングの有効化　---　4　
　　　2.1.4.4　ウィジェットへの名前の付与　---　4　
　　　2.1.4.5　既存のウィジェットへのアクセス　---　5　
3　ウィジェット（Widgets）　---　6　
　3.1　文字列，画像の表示　---　6　
　　3.1.1　Text　---　6　
　　　3.1.1.1　使用できるフォント　---　6　
　　　3.1.1.2　余白と枠　---　7　
　　3.1.2　Image　---　8　
　3.2　文字の入力　---　9　
　　3.2.1　InputText　---　9　
　　　3.2.1.1　イベント，値，ウィジェットの対応付け　---　10　
　　　3.2.1.2　InputTextへのイベントハンドリングの登録　---　10　
　　　3.2.1.3　パスワード入力フィールド　---　11　
　　　3.2.1.4　InputTextへの値の設定　---　11　
　　3.2.2　Multiline　---　12　
　3.3　ボタン類　---　13　
　　3.3.1　Button　---　13　
　　3.3.2　Checkbox　---　15　
　　3.3.3　Radio　---　15　
　3.4　選択入力　---　16　
　　3.4.1　Listbox　---　16　
　　3.4.2　Spin　---　17　
　　3.4.3　Slider　---　18　
　　　3.4.3.1　Sliderへの値の設定　---　18　
　3.5　枠，区切り線　---　19　
　　3.5.1　Frame　---　19　
　　3.5.2　VerticalSeparator　---　21　
　3.6　進捗バー　---　21　
　3.7　表，ツリー　---　22　
　　3.7.1　Table　---　22　
　　3.7.2　Tree　---　23　
　3.8　様々な表示構造　---　26　
　　3.8.1　Tab，TabGroup　---　26　
　　3.8.2　Pane，Column　---　27　
　　　3.8.2.1　Columnを応用したウィジェットの表示位置の調整　---　28　
　3.9　メニュー　---　31　
　　3.9.1　OptionMenu　---　31　
　　3.9.2　MenuBar　---　31　
　　3.9.3　ButtonMenu　---　32　
　3.10　Canvas　---　33　
4　ポップアップウィンドウ　---　35　
　4.1　入力　---　35　
　　4.1.1　PopupGetText　---　35　
　4.2　報告，確認のためのポップアップ表示　---　36　
5　ウィンドウの扱い　---　38　
　5.1　リサイズ可能にする設定　---　38　
　5.2　ウィンドウのサイズと位置について　---　38　
　5.3　テーマの設定　---　40　
　　5.3.1　デザインテーマの一覧表示　---　40　
　　5.3.2　使用できるデザインテーマの調査　---　40　
　5.4　タイトルバーの有無　---　41　
　　5.4.1　ウィンドウの透明度　---　41　
A　付録　---　42　
　A.1　matplotlibで作成したグラフをレイアウトに埋め込む方法　---　42　
　　A.1.1　matplotlibによって作成されるグラフ　---　42　
　　A.1.2　FigureオブジェクトのグラフをCanvasに変換する方法　---　43　
　A.2　Tkinterのオブジェクトとの対応　---　45

---
###関連リンク
[● Tkinterを使うのであればPySimpleGUIを使ってみたらという話](https://qiita.com/dario_okazaki/items/656de21cab5c81cabe59)
[● PySimpleGUIで「Kivy+PyTorchでお絵かきクイズを作る」のGUI部分を書き直してみた](https://qiita.com/dario_okazaki/items/59e48444c85e8516123e)
[● PySimpleGUIでグラフを描く](https://qiita.com/dario_okazaki/items/dc72976987d7ef485df1)
[● PySimpleGUIでVBAの代わりになるUIをつくってみる（ファイルダイアログ、リスト、ログの出力）](https://qiita.com/dario_okazaki/items/4ba70e8a7ee1a6b024e8)