PySimpleGUI巴士订票系统二维码扫描无可用数据求助
问题排查与修复
你的二维码扫描提示“无可用数据”的核心原因是参数传递错误+重复生成覆盖文件,具体问题和修复方案如下:
问题分析
- 参数传递完全错误:在
Reserve Ticket事件处理中,你先是把用户输入的字典values直接传给了二维码生成函数,而非经过inputformat格式化后的预约详情字符串;接着又把第一次生成的二维码文件路径再次传给生成函数,导致最终生成的二维码内容是本地文件路径,根本不是你需要的预约信息。 - 重复生成覆盖文件:两次调用
qrcode_gen都会将图片保存为Qr.png,第二次生成的文件直接覆盖了第一次的,界面最终显示的是内容为文件路径的二维码,扫描自然无法识别有效数据。
修复后的代码
将Reserve Ticket事件的代码替换为以下内容:
elif event == 'Reserve Ticket': reservation_list(values, reservations) # 获取格式化后的预约详情 ticket_info = inputformat(values) psg.popup(ticket_info) # 用预约详情生成二维码并获取路径 qr_image_path = qrcode_gen(ticket_info) # 更新界面上的二维码图片 window['-IMG-'].update(filename=qr_image_path)
额外优化建议
- 给二维码文件名添加唯一标识(比如时间戳),避免多次预约时覆盖旧二维码:
修改qrcode_gen函数的文件名部分:from datetime import datetime # ... file_name = f'Qr_{datetime.now().strftime("%Y%m%d%H%M%S")}.png' - 增加输入合法性校验,比如检查姓名、手机号是否为空,是否选择了目的地和性别,避免空值导致程序报错。
内容的提问来源于stack exchange,提问作者Francis Boateng
相关产品推荐
相关产品推荐

