You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从树莓派迁移到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:31:00