Хорошо, вот полный рабочий пример в pyglet. Он отображает текст «hello world», который случайно обходит окно, и выдает снимок экрана (используя ту же строку кода, которую вы разместили) при каждом нажатии клавиши.
import pyglet, random
window = pyglet.window.Window()
label = pyglet.text.Label('Hello, world',
font_name='Times New Roman',
font_size=36,
x=window.width//2, y=window.height//2,
anchor_x='center', anchor_y='center')
@window.event
def on_draw():
window.clear()
label.draw()
@window.event
def on_key_press(symbol, modifiers):
pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot.png')
def update(dt):
label.x += random.randint(-10, 10)
label.y += random.randint(-10, 10)
pyglet.clock.schedule_interval(update, 0.1)
pyglet.app.run()
Снимок экрана не останавливает цикл событий. Цикл обработки событий в pyglet просто ленив и пытается сделать как можно меньше работы. Вам нужно запланировать повторное выполнение функции, если вы хотите, чтобы все происходило самостоятельно. В противном случае он будет ожидать события, к которому подключен слушатель. (Ваш код должен прослушивать событие мыши, поэтому он возобновляет работу при щелчке мыши.)
Краткий ответ, я подозреваю, что вам нужно исправить это pyglet.clock.schedule_interval(...)
.