Метод обновления в Pyglet

Я новичок в pyglet, и у меня есть вопрос об обновлении изображения на экране. Приходится каждый раз при нажатии мышки менять счет, а у меня все время ноль, где я ошибся и как это исправить?

from pyglet.window import mouse
from pyglet import *
import pyglet

window = pyglet.window.Window(800, 600)
n = 0
label = pyglet.text.Label(str(n), x = window.width/2, y = window.width/2 )

@window.event
def on_mouse_press(x, y, button, modifiers):
    if button == mouse.LEFT:
        global n
        n += 1

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

def update():
    pass

pyglet.app.run()
pyglet.clock.schedule_interval(update, 1/30.0)

Благодарю вас!


person Belogurow    schedule 01.03.2016    source источник


Ответы (1)


Вам нужно снова создать метку, чтобы изменить ее значение (или лучше изменить атрибут label.text)! На самом деле вы не передавали n в pyglet.text.Label, а создавали строку "на лету", содержащую это значение.

@window.event
def on_mouse_press(x, y, button, modifiers):
    if button == mouse.LEFT:
        global n
        n += 1
        label.text = str(n)

Надеюсь, поможет.

person cdonts    schedule 01.03.2016
comment
Извините, я позабочусь о label, но как в методе on_mouse_press я могу создать новый примитив типа GL_POINTS с координатами (x, y)? - person Belogurow; 02.03.2016
comment
@ Artur123 Artur123 Боюсь, я не могу вам с этим помочь, я никогда не использовал ни Pyglet, ни OpenGL. - person cdonts; 02.03.2016