从树莓派迁移到PC的Python GUI代码运行异常求助
问题解决:guizero GUI窗口一闪而过或无响应
你的核心问题是代码最后一行的方法调用错误:
- guizero中启动GUI事件循环需要调用
app.display()方法,而不是直接写app.display(这只是引用方法对象,不会执行启动循环的操作) - 原代码执行完所有语句后直接退出,所以窗口仅显示1秒就关闭;错误添加等待指令会阻塞GUI事件循环,导致程序无响应
修正后的完整代码
from guizero import App, Combo, Text, CheckBox, ButtonGroup, PushButton, info def do_booking(): info('Booking', 'Thank you for Booking') print(film_choice.value) print(vip_seat.value) print(row_choice.value) app = App(title="My second GUI app", width=500, height=200, layout="grid") film_discription = Text(app, text='Which film do you want to watch?', grid=[0,0], align='left') film_choice = Combo(app, options=['Star Wars', 'Harry Potter', 'Frozen', 'Lion King'], grid=[1,0], align='left') vip_seat_discription = Text(app, text='VIP is more comfy and can go down', grid=[0,1], align='left') vip_seat = CheckBox(app, text='VIP seat?', grid=[1,1], align='left') row_choice_disciption = Text(app, text='Where do you want to sit?', grid=[0,2], align='left') row_choice = ButtonGroup(app, options=[ ['Front', 'F'], ['Middle', 'M'], ['Back', 'B'] ], selected='M', horizontal=True, grid=[1,2], align='left') book_seats = PushButton(app, command=do_booking, text='Book Seat', grid=[1,3], align='left') # 修正:调用display方法启动GUI事件循环 app.display()
说明
app.display()会启动guizero的事件循环,让GUI窗口保持打开状态,等待用户交互- 事件循环会处理按钮点击、输入框操作等用户行为,同时维持窗口显示,不会出现无响应或自动关闭的问题
内容的提问来源于stack exchange,提问作者Reuby123
相关产品推荐
相关产品推荐

