はじめに
PysimpleGUIのラジオボタンの配置の例題はいくつかあったのですが、実際の使い方の例があまりなかったので、覚えとして記載します。
ラジオボタンの使い方ではないですが、こちらのチェックボックスの使い方を参考にしました。
PySimpleGUIで動的にチェックボックスを作成して選択した値を取得してみた
import PySimpleGUI as sg
sg.theme('Dark Blue 3')
radio_dic = {
'-1-': 'aaa',
'-2-': 'bbb',
'-3-': 'ccc',
}
# Create radio Buttons by list comprehensions
layout = [
[sg.Text('select input file', size=(45, 1))],
[sg.Text("file"), sg.InputText(key="-file-")],
[sg.Radio(item[1], key=item[0], group_id='0') for item in radio_dic.items()],
[sg.Submit(key='-submit-')],
[sg.Output(size=(45, 10))]
]
window = sg.Window('Example for radio button', layout)
while True:
event, values = window.read()
if event is None:
break
if event == '-submit-':
print(values)
print(values['-1-'],values['-2-'],values['-3-'])
window['-2-'].update(True)
window.close()
実行例
コードの説明
radio_dicでラジオボタンの名前と、キーの辞書形式を作成します。
layoutのラジオボタンをリスト内包表記で作成します。この時Radioボタンは、group_idを指定しないといけないので、idを指定します。キーはpysimpleGUIの習慣で-で囲んでいます。(例えば、"-file-"など)
リスト内包表現を使わないで一つ一つ設定する場合には、デフォルト(True、False)を設定することができます。
ラジオボタンは、同じグループのうち一つだけTrueになります。
Submitボタンを押すと、valuesに入っている値がOUTPUTに表示されます。valuesは辞書型ですので、キーと値が表示されます。その次のprintで、キーを指定した値が表示されます。
次のwindow表示されているウィンドウを指定して、値をアップデートしています。最初はラジオボタンにチェックが入っておらず、すべてFalseになっていますが、Submitを押すと、bbbにチェックが入ります。またSubmitを押すと今度は、-2-がTrueになります。
