如何使用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
相关产品推荐
相关产品推荐

