はじめに
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
になります。