はじめに
PySimpleGUIを使用したいが、日本語版の説明が乏しくて、毎度調べるのが大変。
めんどくさいのでここを見れば思い出せるように覚えておきたいものを記録する。
基本的には、各引数を調べたい場合、公式サイトのCall Referenceを参照するとよいです。
※この記事は私が学生のときに書いていたものです。
限定公開していたけど、もったいないと思い投稿しなおしました。
目次(関数ごと)
ウィンドウの設定
sg.Window
sg.theme
レイアウト内で使用するもの
sg.Text
sg.Button
sg.Tab および sg.TabGroup
sg.Window
この関数はウィンドウを作成するときに用いる。
以下、例プログラム。
import PySimpleGUI as sg # ライブラリの読み込み
sg.theme('LightBrown1')
def make_main():
# ----------------------------------------メインウィンドウ作成--------------------------------------------
# レイアウト作成
main_layout = [[sg.Text('あいうえ', font=('メイリオ', 22))],
[sg.Text('')],
[sg.Button('あ', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
tooltip=('周波数を変更する画面に行きます'), use_ttk_buttons=True, key='周波数')],
[sg.Button('い', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
use_ttk_buttons=True, key='切り出し')],
[sg.Button('う', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
use_ttk_buttons=True, key='チャンネル分割')],
[sg.Button('え', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
use_ttk_buttons=True, key='インパルス')],
[sg.Text('')]]
# ウィンドウ作成
return sg.Window('初期画面', main_layout, font='メイリオ', size=(600, 550), element_justification=('center'))
# ----------------------------------------------------------------------------------------------------
window = make_main()
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == "Exit":
break
window.close()
このようなプログラムを実行すると以下の写真のような画面ができる。
sg.Window('初期画面', main_layout, font='メイリオ',
size=(600, 550), element_justification=('center'))
よく使う引数は、上のようなものである。
この場合は、第一引数に作成するウィンドウのタイトル名、第二引数にレイアウトを格納している変数名、第三引数にウィンドウ内で使用するフォント、第四引数にウィンドウのサイズ、第五引数にウィンドウ内の要素の配置場所(今回は真ん中)を指定している。
ほかにも、
ウィンドウ内の様々な要素のデフォルトを細かく設定したり(たくさんある)、
ウィンドウが表示される位置を調整したり(location)、
タイトルの横に表示されるアイコンの画像を変更したり(icon)(基本的にbase64を使用するべき)など、ウィンドウの引数はめっちゃたくさんあるから用途に応じて公式説明書のウィンドウの項目をチェック
sg.theme
pythonで以下のコードを実行するか、
import PySimpleGUI as sg
sg.theme_previewer()
この素晴らしいまとめサイトを見よう!
テーマの画像を全部まとめてくださっている素晴らしいページ
sg.Text
レイアウトで用いる関数の一つ
ウィンドウ内にテキストや空白を置くことができる。
sg.Text('あいうえ', font=('メイリオ', 22))
こんな感じで使う
この例では最初に置きたい文字列を記載して、第2引数でフォントと文字サイズを指定している
おすすめ引数
font=('フォント名', 文字サイズ) サイズはintを使用
pad=(文字の横の空白の幅, 文字の下の空白の幅) intを使用
key=('なまえ') このテキストをどこかで使いたいときの鍵のなまえ
grab=True Trueのとき、この要素を掴むとウィンドウを移動させることができる
tooltip='テキスト' 要素の上にマウスが乗ったときにテキストが表示される
sg.Button
こんな感じに使う
sg.Button('あ', font='メイリオ', size=(20, 2),
tooltip=('あ!マウスのってる~'),
use_ttk_buttons=True, key='--a--')
ここにある引数は、
ボタンの上に置く文字列、フォント、ボタンのサイズ、ボタンにカーソルが乗ったときに表示されるテキスト、ttkボタンを使用、key
です。
ttk使うとボタンが動的になるから使ってみてるけど、よくわかっていないです。
角が丸いボタンを作りたくて悩んだけど、どうやら引数ではつくれないため、画像データを作成する必要がある、、、。余裕があったら作ろ。
sg.Tab および sg.TabGroup
画面内にタブを生成する。
以下サンプルプログラム。
import PySimpleGUI as sg # ライブラリの読み込み
sg.theme('DarkTeal')
def make_main():
# ----------------------------------------メインウィンドウ作成--------------------------------------------
# レイアウト作成
# タブ0:aaa
tab0 = [[sg.Text('ほあ~~~~~~~')],
[sg.Button('ボタン')],
[sg.Text(' ', size=(10, 50))]]
# タブ1:iii
tab1 = []
# タブ2:uuu
tab2 = []
# タブ3:eee
tab3 = []
# タブ4:ooo
tab4 = []
#レイアウト統合
main_layout = [[sg.Text('行いたい動作を選択してください', font=('メイリオ', 22))],
[sg.TabGroup([[sg.Tab('aaaあああああ', tab0),
sg.Tab('iiiいいい', tab1),
sg.Tab('uuuうううう', tab2),
sg.Tab('eeeええええ', tab3),
sg.Tab('oooお', tab4)]])]]
# ウィンドウ作成
return sg.Window('初期画面', main_layout, font='メイリオ', size=(600, 500), element_justification=('center'))
# ----------------------------------------------------------------------------------------------------
window = make_main()
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == "Exit":
break
window.close()
main_layout = [[sg.Text('行いたい動作を選択してください', font=('メイリオ', 22))],
[sg.TabGroup([[sg.Tab('aaaあああああ', tab0),
sg.Tab('iiiいいい', tab1),
sg.Tab('uuuうううう', tab2),
sg.Tab('eeeええええ', tab3),
sg.Tab('oooお', tab4)]])]]
sg.Tab['タブの名前', タブで使用するレイアウトの変数]
sg.TabGroup[ ( [ [sg.Tab(), sg.Tab()…] ] ) ]