如何使用PySimpleGUI实现会员费用计算功能?
给PySimpleGUI的单选按钮/复选框赋值计算会员总费用
核心思路是:先给每个选项绑定对应的费用数值,在用户触发计算操作时,获取选中的选项并累加对应费用,最后用弹窗展示总金额。
1. 核心实现步骤
单选按钮(固定会员等级费用)
单选按钮是互斥选择(比如不同会员等级),可以用字典把单选按钮的key和对应费用做映射,之后通过values[key]判断选中状态,取出对应基础费用。
复选框(可选增值服务费用)
复选框是多选,同样用字典映射key和费用,循环检查每个复选框的选中状态,累加选中项的费用。
2. 完整示例代码
import PySimpleGUI as sg # 预定义会员等级对应的费用 membership_costs = { '-SILVER-': 199, # 银卡 '-GOLD-': 399, # 金卡 '-DIAMOND-': 699 # 钻石卡 } # 预定义增值服务对应的费用 extra_service_costs = { '-GYM-': 50, # 健身 '-SPA-': 80, # SPA '-CAR_WASH-': 30 # 洗车 } # 搭建GUI布局 layout = [ [sg.Text('选择会员等级')], [sg.Radio('银卡(199元/月)', 'MEMBER_GROUP', key='-SILVER-', default=True)], [sg.Radio('金卡(399元/月)', 'MEMBER_GROUP', key='-GOLD-')], [sg.Radio('钻石卡(699元/月)', 'MEMBER_GROUP', key='-DIAMOND-')], [sg.Text('可选增值服务')], [sg.Checkbox('健身服务(50元/月)', key='-GYM-')], [sg.Checkbox('SPA服务(80元/月)', key='-SPA-')], [sg.Checkbox('洗车服务(30元/月)', key='-CAR_WASH-')], [sg.Button('计算总费用'), sg.Button('退出')] ] window = sg.Window('会员费用计算器', layout) # 事件循环 while True: event, values = window.read() if event == sg.WIN_CLOSED or event == '退出': break if event == '计算总费用': # 计算基础会员费 base_cost = 0 for key in membership_costs: if values[key]: base_cost = membership_costs[key] break # 计算增值服务费 extra_cost = 0 for key in extra_service_costs: if values[key]: extra_cost += extra_service_costs[key] # 总费用 total_cost = base_cost + extra_cost # 弹窗展示结果 sg.popup(f'会员总费用:{total_cost}元/月', title='计算结果') window.close()
3. 新手必看注意点
- 单选按钮的第二个参数(示例里的
'MEMBER_GROUP')是组标识,同一组的单选按钮只能选一个,不能省略或写错。 - 字典里的
key必须和布局中单选/复选框的key完全一致(包括大小写、符号),否则无法匹配到对应费用。 - 要扩展选项时,只需在字典中添加新的
key-费用对,再在布局里加对应的控件即可,无需修改计算逻辑。
内容的提问来源于stack exchange,提问作者czupppy1111
相关产品推荐
相关产品推荐

