使用Pyglet库时遭遇AttributeError: 'str' object has no attribute '_own_batch'错误的技术求助
AttributeError when using pyglet.text.Label: 'str' object has no attribute '_own_batch'
这个错误的原因很直观——你用错了pyglet.text.Label的调用方式!
错误根源
pyglet.text.Label.draw()是一个实例方法,它需要先基于Label类创建一个实例对象,才能被调用。但你的代码里直接用Label.draw("Hello world application"),相当于把字符串"Hello world application"当成了方法的self参数(也就是Label实例)传递进去。draw方法内部需要访问实例的_own_batch属性,可字符串对象根本没有这个属性,于是就抛出了AttributeError。
解决方法
你需要先正确创建Label的实例,把文本内容作为参数传给Label构造函数,之后再在on_draw事件里调用这个实例的draw()方法。另外建议加上坐标和锚点参数,确保文字能显示在窗口的可见区域(默认位置是窗口左下角,可能看不到)。
修正后的完整代码:
import pyglet window = pyglet.window.Window() # 先创建Label实例,设置位置让文字居中显示 label = pyglet.text.Label("Hello world application", x=window.width//2, y=window.height//2, anchor_x='center', anchor_y='center') @window.event def on_draw(): window.clear() label.draw() # 调用实例的draw方法 pyglet.app.run()
关键修正点
- 替换了错误的
Label.draw("...")写法,改为创建Label实例pyglet.text.Label("...") - 添加了
x、y坐标和锚点参数,让文字显示在窗口中央,避免默认位置导致的不可见问题 - 在
on_draw函数中调用的是Label实例的draw()方法,而非类的方法
内容的提问来源于stack exchange,提问作者DSG
相关产品推荐
相关产品推荐

