Pythonで作るGUIアプリ入門 Part6 -ラジオボタンの設定-
ラジオボタンの設定
ラジオボタンを使用すれば、複数の選択肢の中から1つだけ選んでもらいたいときに使用出来ます。
ラジオボタンは、sg.Radio(text, group_id)で設定する事が出来ます。textには、選択肢を文字列で入力します。 group_idは、ラジオボタンのグループであり、同一のグループで1つだけ選択できるように制約を加えます。
旅の目的地をラジオボタンで選び、選んだ結果をポップアップで出力するGUIアプリを作成して、ラジオボタンの設定を学びましょう。GUIは、図6-1と図6-2のようになります。
コードは、以下のコードとなります。
import PySimpleGUI as sg
layout = [
[sg.Text('次の連休は、どこへ一番行きたいですか?')],
[sg.Radio('ディズニーランド', group_id='destination', key='-Disney-')],
[sg.Radio('レゴランド', group_id='destination', key='-Lego-')],
[sg.Radio('USJ', group_id='destination', default=True, key='-USJ-')],
[sg.Button('回答', key='-Btn-')]
]
window = sg.Window('旅の目的地を選択', layout)
while True:
event, value = window.read() # イベントの入力を待つ
if event == '-Btn-':
if value['-Disney-'] == True:
output = 'ディズニーランド'
elif value['-Lego-'] == True:
output = 'レゴランド'
else:
output = 'USJ'
message = output + 'として回答を受け付けました。'
sg.popup(message)
break
elif event is None:
break
window.close()
レイアウトの設定
1行目では、テキストで選択肢の質問を設定しています。
2行目から4行目でラジオボタンの選択肢を設定しています。いずれのラジオボタンも、group_id = 'destination' としてグループ設定をしていますので、3つの選択肢から1つしか選べないようになっています。そして、選択肢にはテーマパーク名とそれぞれのキーを割り当てています。また、4行目のUSJには default=True として最初から選択された状態(デフォルト値)を設定しています。
5行目では回答ボタンとキーを設定しています。
layout = [
[sg.Text('次の連休は、どこへ一番行きたいですか?')],
[sg.Radio('ディズニーランド', group_id='destination', key='-Disney-')],
[sg.Radio('レゴランド', group_id='destination', key='-Lego-')],
[sg.Radio('USJ', group_id='destination', default=True, key='-USJ-')],
[sg.Button('回答', key='-Btn-')]
]
イベントの設定
回答ボタン’-Btn-’が押された時のイベントを設定します。
if event == '-Btn-':
if文でラジオボタンで選ばれた値に応じて、変数outputに入れる値を変更します。ラジオボタンのvalue[key] はブール値となりますので、TrueもしくはFalseとなります。ラジオボタンが選択されていればTrue、選択されていなければFalseとなります。
if value['-Disney-'] == True:
output = 'ディズニーランド'
elif value['-Lego-'] == True:
output = 'レゴランド'
else:
output = 'USJ'
選択肢の結果を変数outputに格納しました。 変数message を output + 'として回答を受け付けました。' として選択肢に応じたメッセージとします。そして、この変数をポップアップで表示させます。
message = output + 'として回答を受け付けました。'
sg.popup(message)
以上のようにして、ラジオボタンを設定する事が出来ます。1つのGUI中に複数のグループを使用する事も出来ます。
例えば、以下のようにグループを2つ作る事もできます。詳細の説明は割愛しますが、画像とコードを載せますので参考になさって下さい。コード中で、if文の条件を分かり易さのためにif value['-Disney-'] == True:としていましたが、今回はif value['-Disney-']:としています。
import PySimpleGUI as sg
layout = [
[sg.Text('次の連休は、どこへ一番行きたいですか?')],
[sg.Radio('ディズニーランド', group_id='destination', key='-Disney-')],
[sg.Radio('レゴランド', group_id='destination', key='-Lego-')],
[sg.Radio('USJ', group_id='destination', default=True, key='-USJ-')],
[sg.Text('-' * 60)],
[sg.Text('目的地を選ぶ決め手は何ですか?')],
[sg.Radio('距離', group_id='reason', key='-Distance-')],
[sg.Radio('価格', group_id='reason', key='-Price-')],
[sg.Button('回答', key='-Btn-')]
]
window = sg.Window('旅の目的地を選択', layout)
while True:
event, value = window.read() # イベントの入力を待つ
if event == '-Btn-':
if value['-Disney-']:
output1 = 'ディズニーランド'
elif value['-Lego-']:
output1 = 'レゴランド'
else:
output1 = 'USJ'
if value['-Distance-']:
output2 = '距離'
else:
output2 = '価格'
message = '行きたい場所は' + output1 + 'で、' + 'その理由は' + output2 + 'です。'
sg.popup(message)
break
elif event is None:
break
window.close()
次回は、チェックボックスの使い方を説明します。
GUIアプリ入門講座は毎日更新します!
記事が参考になりましたら、❤️を押していただけると励みになります😊
「世界一やさしいPythonデスクトップアプリ開発のはじめ方」を2022/3/19にAmazon Kindleで発売しました!
Amazon売れ筋ランキングで…
・Kindle有料(全体):14位!!!
(ありがとうございます💕)
・プログラミング(Kindleストア):1位
・データベース(Kindleストア):1位
・デジタルエンターテイメント(Kindleストア):1位
と大変好評をいただいております。ありがとうございます。
Kindle Unlimitedなら無料ですので、ぜひご一読下さい!
この記事が気に入ったらサポートをしてみませんか?