Pyglet窗口不会在调整大小时重绘

时间:2013-08-18 01:12:35

标签: python-2.7 pyglet

我有一个子类,它是pyglet.window.Window的子类,我需要它是一个可调整大小的窗口。我想出了如何调整它的大小,但是当我实际调整大小时,我需要让它重绘屏幕上的所有内容。这是我到目前为止所做的:

if __name__ == '__main__':
    window = Application()

    @window.event()
    def on_resize(x,y):
        window.label.x = window.WindowSize[0]/2
        window.label.y = window.WindowSize[1]*15/16

    @window.event()
    def on_draw():
        window.clear()
        window.label.draw()
        for control in window.controls:
            control.draw()

    pyglet.app.run()

所以我们创建窗口,然后有两个窗口事件。我希望我做得对 - 我是pyglet的新手。正如我所说,主要的问题是,当我调整窗口大小时,它实际上并没有改变任何东西,除非我按下窗口上的一个按钮来改变位置。

1 个答案:

答案 0 :(得分:0)

在不知道Application中发生了什么的情况下很难准确回答,但是,Pyglet事件循环只会为无效的窗口调度on_draw,因此你可以尝试添加

window.invalid = True

在on_resize中,看看是否有帮助。

此外,您可以在Pyglet源中找到有关window.invalid的更多信息: https://code.google.com/p/pyglet/source/browse/pyglet/window/__init__.py#362