Hi, i’m searching for a long time and i dont understand how to get the onWindowClose event.
Do someone have a simple example ?
Thanks
3o3
Hi, i’m searching for a long time and i dont understand how to get the onWindowClose event.
Do someone have a simple example ?
Thanks
3o3
Listen for ‘window-event’, and then check win.getProperties().getOpen() to see if the window is no longer open. There’s a fine example of this in direct/src/showbase/ShowBase.py.
David
Hi, and thanks for your fast and precise answer.
Ok, now i understand better, but i still can’t get the on close : properties.getOpen() always return 1
I have done all like in ShowBase.py :
self.accept('window-event', self.onClose)
and the func :
def onClose(self, win):
if win == base.winList[0]:
properties = win.getProperties()
print "Got window event: %s" % (repr(properties))
print "getOpen = "+str(properties.getOpen())
if not properties.getOpen(): #this never appen
print "User closed main window."
Maybe it’s because when i close the window, python script is ending before executing onClose()
But why ?
I must say that my english is very poor, so understanding the doc is quiet difficult …
thanks again
3o3
That’s because ShowBase is calling this code as well, and as you can see, it checks if the window is still open – if not, it calls self.userExit() to shut down the application.
One way to prevent this is by setting self.userExit to an empty function:
base.userExit = lambda: None
That will prevent your program from exiting when you close the window, but you do need to close the program yourself then when you finish with the window.
Ok, thanks, but i realise that my code was in a class, so instead of self.accept , i use base.accept, and it’s working quiet well exept that double exec returns error.
Now with
base.userExit = lambda: None
it works perfectly
Topic is solve
Many thanks
3o3