2016-11-15 2 views
1

Mein Text wird nicht angezeigt, wenn ich on_resize() -Ereignis verwenden. Um genauer zu sein, kommt das Problem von der "Return pyglet.event.EVENT_HANDLED" Anweisung.Pyglet: mit on_resize() -Ereignis verursacht mein Text zu verschwinden

Hier ist ein kurzes Beispiel:

import pyglet;from pyglet.gl import * 

window = pyglet.window.Window(resizable=True) 
label = pyglet.text.Label('Hello, world', font_size=36) 

@window.event 
def on_resize(width, height): 
    glViewport(0,0,width,height); 
    return pyglet.event.EVENT_HANDLED 

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

pyglet.app.run() 

Dieser Code führt zu einem schwarzen Bildschirm. Ich muss die return-Anweisung im on_resize-Ereignis entfernen, damit es funktioniert.

Fehle ich etwas?

Antwort

1

Nun, ich verstehe immer noch nicht, warum der obige Code nicht funktioniert, aber ich endlich eine Lösung gefunden:

import pyglet;from pyglet.gl import * 

window = pyglet.window.Window(resizable=True) 
label = pyglet.text.Label('Hello, world', font_size=36) 

# adding gluPerspective, don't know why and dont want to use it, but no choice... 
gluPerspective(60., window.width/float(window.height), .1, 1000.) 

@window.event 
def on_resize(width, height): 
    glViewport(0,0,width,height); 
    return pyglet.event.EVENT_HANDLED 

@window.event 
def on_draw(): 
    # adding a translation because of gluPerspective() 
    glPushMatrix() 
    glTranslatef(0, -200, -450) 
    label.draw() 
    glPopMatrix() 

pyglet.app.run() 

Letzte Präzision: gluPerspective darf nicht in der on_resize() Ereignisse sein, weil in diesem Fall der Text verschwindet, sobald der Benutzer die Größe des Fensters ändert ...

Verwandte Themen