运行pyglet代码报AttributeError: 'int'无'_get_domain'属性如何解决
错误原因
你在初始化self.batch时没有对pyglet.graphics.Batch类进行实例化,直接将类本身赋值给了self.batch变量:
# 错误写法:未加括号完成实例化 self.batch = pyglet.graphics.Batch
调用self.batch.add()时,本质是直接调用类的实例方法,Python会自动把你传入的第一个参数4当成方法要求的self参数,因此会抛出“int类型没有对应属性”、“期望接收batch类型却收到int”的提示,和后续传入的参数逻辑无关。
解决方案
仅需修改self.batch的初始化代码,添加括号完成类的实例化即可:
# 修正写法:加括号实例化Batch类 self.batch = pyglet.graphics.Batch()
修改后完整的Model类代码参考:
class Model: def __init__(self): # 修正处:添加括号完成Batch实例化 self.batch = pyglet.graphics.Batch() x,y,z = 0,0,0 X,Y,Z = x+1,y+1,z+1 color = ('c3f', (1,1,1)*4) self.batch.add(4, pyglet.gl.GL_QUADS, None, ('v3f', (x,y,z, X,y,z, X,Y,z, x,Y,z)), color) def draw(self): self.batch.draw()
修改后重新运行即可正常渲染图形。
内容的提问来源于stack exchange,提问作者HAPPY
相关产品推荐
相关产品推荐

