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

CircuitPython LCD绘图报错ValueError: object not in sequence求助

错误原因分析与解决办法

错误根源

ValueError: object not in sequence 触发的直接原因是你尝试从main这个displayio.Group中移除一个当前不存在于其中的对象:

  • 比如第一次调用toggleCircle(1)时,main里有circle和StatusGrp,执行main.remove(circle)没问题;但如果再次调用toggleCircle(1),此时main里已经没有circle了,再执行main.remove(circle)就会报错。
  • 同理,当sel=0时,如果当前main里本来就没有modeCircle,执行main.remove(modeCircle)也会触发相同错误。

解决方法

方法1:移除前先检查对象是否存在

修改toggleCircle函数,在调用remove前先判断对象是否在Group中:

def toggleCircle(sel):
    if sel == 1:
        if circle in main:
            main.remove(circle)
        if StatusGrp in main:
            main.remove(StatusGrp)
        main.append(modeCircle)
        main.append(StatusGrp)
    elif sel == 0:
        if modeCircle in main:
            main.remove(modeCircle)
        if StatusGrp in main:
            main.remove(StatusGrp)
        main.append(circle)
        main.append(StatusGrp)

方法2:用状态变量记录当前显示的圆形

增加一个变量跟踪当前显示的是哪个圆形,避免重复执行无效的移除操作:

# 初始化状态变量,假设默认显示circle
current_circle = circle

def toggleCircle(sel):
    global current_circle
    if sel == 1 and current_circle != modeCircle:
        if StatusGrp in main:
            main.remove(StatusGrp)
        main.remove(current_circle)
        main.append(modeCircle)
        main.append(StatusGrp)
        current_circle = modeCircle
    elif sel == 0 and current_circle != circle:
        if StatusGrp in main:
            main.remove(StatusGrp)
        main.remove(current_circle)
        main.append(circle)
        main.append(StatusGrp)
        current_circle = circle

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:32:12