2016-11-15 3 views
1

on_resize()イベントを使用すると、テキストが表示されません。 より具体的には、問題は "return pyglet.event.EVENT_HANDLED"ステートメントから来ています。黒い画面にPyglet:on_resize()イベントを使用するとテキストが消えます

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() 

このコードの結果:

ここ短い例です。 私はon_resizeイベントでreturn文を削除する必要があります。

何か不足していますか?上記のコードは動作しない理由を

答えて

1

は、まあ、私はまだ理解していない、しかし、私は最終的に解決策を見つけた:

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() 

最終精度:gluPerspectiveではon_resize()イベントであることをしてはなりません、その場合、ユーザーがウィンドウのサイズを変更するとテキストが消えてしまうので...

関連する問題