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

如何实现文本颜色渐变?guizero程序无响应问题求助

问题根源与解决方案

你的代码出现无响应的核心原因是:使用while循环+sleep()阻塞了guizero的GUI主事件循环。guizero的app.display()才是启动界面渲染、事件处理的核心循环,而你的循环会卡住这个主循环,导致界面无法刷新、元素无法正常显示,最终触发系统的“未响应”提示。

正确的做法是使用guizero内置的after()方法异步调度任务,它不会阻塞主循环,能让界面保持响应并实时更新。


1. 基础版:黑→红渐变的修正代码

from guizero import App, Text

re = 0
ge = 0
be = 0

app = App("My title")
a = Text(app, text="Hello World", color=(re, ge, be))

def update_color():
    global re
    if re < 255:
        re += 1
        a.text_color = (re, ge, be)
        # 100毫秒后再次调用自身,实现循环更新
        app.after(100, update_color)

# 启动颜色渐变
update_color()

app.display()

2. 完整版:红→绿→蓝→红循环渐变的修正代码

from guizero import App, Text, PushButton

# 初始颜色与状态变量
re = 255
ge = 0
be = 0
work = 1
loop_count = 0  # 控制循环次数(原代码的range(2))

app = App("Top Secret (yet)")
app.bg = "black"
fill = Text(app, "", 200)
start = PushButton(app, text="Start!")
start.bg = "blue"
seco = Text(app, "nothing", 50, color=(re, ge, be), font="Algerian")
seco.hide()

def update_color():
    global re, ge, be, work, loop_count
    # 根据状态更新颜色通道
    if work == 1:
        if re > 0:
            re -= 1
            ge += 1
        else:
            work = 2
    elif work == 2:
        if ge > 0:
            ge -= 1
            be += 1
        else:
            work = 3
    elif work == 3:
        if be > 0:
            be -= 1
            re += 1
        else:
            work = 1
            loop_count += 1
            # 完成2次循环后停止更新
            if loop_count >= 2:
                return
    
    seco.text_color = (re, ge, be)
    # 100毫秒后继续更新
    app.after(100, update_color)

def strt():
    global loop_count
    loop_count = 0
    start.hide()
    seco.show()
    update_color()

# 绑定按钮点击事件
start.command = strt

app.display()

关键说明

  • after(delay, function):guizero的异步任务调度方法,会在delay毫秒后执行function,且不会阻塞主事件循环,保证界面始终可响应。
  • 避免在GUI回调或主循环启动前使用while+sleep():这类同步循环会彻底卡住界面渲染和事件处理,是GUI编程的典型错误。
  • 递归调用after():通过每次更新一小步并递归调度自身,实现平滑的循环渐变效果。

内容的提问来源于stack exchange,提问作者TheCheezGuy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:17:27