Именованные фигуры в pyglet

#python #pyglet

#python #pyglet

Вопрос:

Почему фигуры и другие объекты в pyglet должны иметь имена (как в назначенных переменных)? Прямоугольник ниже с именем «test» отображается успешно, а тот, что на строку ниже, — нет. Почему это?

 from pyglet import shapes

WHITE = (255, 255, 255)

HEIGHT = 1080
WIDTH = 720


window = pyglet.window.Window(HEIGHT, WIDTH)
background = pyglet.graphics.Batch()


test = shapes.Rectangle(200, 200, 50, 50, color=WHITE, batch=background) # Renders successfuly
shapes.Rectangle(300, 300, 50, 50, color=WHITE, batch=background)        # Does not render


@window.event
def on_draw():
    window.clear()
    background.draw()


pyglet.app.run()
  

Комментарии:

1. Скорее всего, pyglet.graphics.Batch содержит только слабую ссылку на pyglet.shapes объект.

Ответ №1:

Здесь вы используете pyglet.graphics.Batch() для совместной визуализации объектов shape, т.е. test (первый прямоугольник) второй прямоугольник. Пакет управляет набором объектов, которые будут нарисованы одновременно, и, следовательно, для создания экземпляров объектов, которые необходимо нарисовать, у них должна быть ссылка, по которой они могут быть сопоставлены с этим пакетом.

Нарисовать прямоугольник как есть, не присваивая его переменной, можно с помощью pyglet.graphics.draw() функции напрямую, передав примитивный тип, координаты rectanggle и formatstring.