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

如何使用Pyglet根据按键事件展示指定GIF动画

Pyglet 按键切换GIF功能修复方案

原有代码存在两处核心错误:

  • on_key_press 中修改的animation是局部变量,既没有覆盖全局动画对象,也没有更新精灵的显示内容
  • on_draw 回调仅清空窗口,没有执行精灵绘制逻辑,初始GIF也无法正常显示

修复后完整代码

import pyglet
from pyglet.window import key

# 初始化默认动画和精灵
animation = pyglet.image.load_animation('/home/arctic/Downloads/work/gif/ErrorToSurprised.gif')
animSprite = pyglet.sprite.Sprite(animation)

window = pyglet.window.Window(width=animSprite.width, height=animSprite.height, resizable=True)

@window.event
def on_key_press(symbol, modifiers):
    global animSprite
    if symbol == key.A:
        # 加载新动画后直接更新精灵的image属性
        new_anim = pyglet.image.load_animation('image1.gif')
        animSprite.image = new_anim
        # 可选:调整窗口尺寸匹配新GIF大小
        window.set_size(new_anim.width, new_anim.height)
    elif symbol == key.B:
        new_anim = pyglet.image.load_animation('image2.gif')
        animSprite.image = new_anim
        window.set_size(new_anim.width, new_anim.height)
    elif symbol == key.ENTER:
        print("Enter Key Was Pressed")

@window.event
def on_draw():
    window.clear()
    # 每次重绘都绘制精灵
    animSprite.draw()

pyglet.app.run()

注意事项

请确保image1.gif、image2.gif存放路径正确,如果是相对路径需要和代码运行的工作目录一致,否则会抛出文件找不到的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:03