2017-04-17 99 views
0

關閉Pyglet後窗口「X」,我認爲事件「on_close」會被觸發,但似乎並非如此。我做錯了什麼?關閉Pyglet中窗口的事件

window = pyglet.window.Window(fullscreen=False) 

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

def on_close(): 
    print("I'm closing now") #<- this never happens 

完整的腳本這裏(175線): https://github.com/VirToReal/py-slideshow/blob/master/slideshow.py

+0

在'on_close()'函數中加入'window.close()'語句。 –

+0

問題是,函數「on_close」永遠不會被調用,我更新了完整應用程序的鏈接 –

回答

1
import pyglet 

window = pyglet.window.Window(fullscreen=False) 

@window.event 
def on_draw(): 
    window.clear() 
    window.flip() 

@window.event 
def on_close(): 
    print("I'm closing now") #<- this never happens 

pyglet.app.run() 

你有兩個問題,一個 - 你錯過pyglet.app.run()或任何形式的事件在你的應用程序調度。

另一個問題是您沒有使用decorator作爲on_close()函數。
先前聲明的裝飾器僅適用於該功能,即on_draw()

一些其他的附註:
您沒有清除窗口,有時需要調用flip(),可能會記住。

+0

對不起,我沒有複製整個文本。但額外的@ window.event做到了!非常感謝! –

+0

@BennyH。不用擔心,很高興它的工作:)快樂的編碼! – Torxed