Pyglet:使用on_resize()事件会导致我的文本被禁用

2024-04-18 16:58:36 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用on_resize()事件时,不会显示我的文本。 更具体地说,问题来自于pyglet.event.event_已处理“声明。在

下面是一个简短的例子:

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语句才能使其正常工作。在

我错过什么了吗?在


Tags: 文本importevent声明returnondef事件
1条回答
网友
1楼 · 发布于 2024-04-18 16:58:36

我还是不明白为什么上面的代码不起作用,但我终于找到了一个解决方案:

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

在最后一个事件中,当用户调整透视图的尺寸时。。。在

相关问题 更多 >