PySimpleGUIを使うと簡単にGUIアプリを作ることができて便利です。
ただ、その中でも、ラジオボタンは直接記述すると煩雑で保守性が悪くなってしまいます。
そこで、リストと辞書を活用して保守性の良い記述を考えてみました。
import PySimpleGUI as sg
rdco = { #ラジオボタン共通設定(辞書)
'font':('meiryo', 16),
'enable_events':True
}
l_rd = [ #ラジオボタン設定 [group_id, デフォルト選択key, {共通オプション}, [[text, key]]]
['rtype', '-RD_RT_NORM-', rdco, [
['白米', '-RD_RT_NORM-'],
['雑穀米', '-RD_RT_ZAKKOU-']
]
],
['rsize', '-RD_RS1-', rdco, [
['小盛', '-RD_RS0-'],
['普通', '-RD_RS1-'],
['大盛', '-RD_RS2-']
]
]
]
l_rdFr = [ #ラジオボタンフレーム設定 [group_id, title]
['rtype', 'ごはんの種類'],
['rsize', 'ごはんの量']
]
RD = {gid : [sg.Radio(n, key=k, group_id=gid, default=(df==k), **op) for n, k in rs]
for gid, df, op, rs in l_rd}
layout =[[sg.Frame(gn, [RD[gid]])] for gid, gn in l_rdFr]
window = sg.Window('radio buttons', layout)
while True:
event, values = window.read()
print(event, values)
if event in (sg.WIN_CLOSED, 'Exit'):
break
window.close()