#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.