Ну, во-первых, ваши отступы ошибочны.
Я также вижу ошибку в строке 4, которая является то, что ваш призыв к super()
должно быть:
super(test, self).__init__()
Это немного нелогичным, но первый аргумент должен быть именем этого класса , тот, который вы определяете.
В строке 5 вы загрузите изображение в переменную img
, но в строке 6 вы также загрузить тот же образ от линии 5 во вторую переменную, переменную экземпляра с именем self.sprite
. Эта переменная экземпляра больше не используется. Линия 6 - это отходы.
Чтобы ответить на ваш реальный вопрос: Я думаю, ваша ошибка в том, как вы пытаетесь определить свое событие on_draw
. Вы перегружаете класс pyglet.window.Window и пытаетесь перегрузить событие on_draw
непосредственно как метод, который не является тем, как он предназначен для работы. Создайте класс для хранения изображения и создайте декоратор в основном файле .py, который подталкивает событие рисования к окну.
import pyglet
class Test(object):
def __init__(self):
super(Test, self).__init__()
img = pyglet.image.load('images/sprites.png')
// Removed prior self.sprite, as it was unneeded.
// Renamed instance variable below.
seq = pyglet.image.ImageGrid(img, 10, 9, 96, 96)
self.sprite = pyglet.image.TextureGrid(seq)
// No indentation, so this is not in the test class.
test = Test()
window = pyglet.window.Window()
@window.event
def on_draw():
// Don't forget to clear the window first!
test.clear()
test.sprite.blit(25, 25, width=150, height=150)
if __name__ == '__main__':
pyglet.app.run()
Попробуйте это. Ваше изображение, вероятно, будет выглядеть странно, хотя ваш яркий вызов меняет опорную точку и растягивает изображение в обоих направлениях.