On my new system, the Python process won’t stop after closing the window spawned by panda.
The only way to stop python.exe is to close it from the task manager.
I’ve tried some of the samples, like the carousel / asteroids and getting the same issue.
Using Windows 8 i386 build 597
In fact, even sys.exit doesn’t seem to do anything when fired from an event.
A simple example:
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
import sys
class World(DirectObject):
def __init__(self):
self.accept('escape', self.exit)
# Check to make sure keyboard events working
messenger.toggleVerbose()
print 'Started'
#This works
#sys.exit()
def exit(self):
print 'Exiting'
sys.exit()
print 'After exit'
w = World()
run()
Output:
Started
:Messenger(debug): sent event: resetClock sentArgs = [-0.015849385041402098], taskChain = None
:Messenger(debug): sent event: window-event sentArgs = [<panda3d.core.GraphicsWindow object at 0x02E36608>], taskChain = None
:Messenger(debug): sent event: aspectRatioChanged sentArgs = [], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask resetPrevTransform], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask dataLoop], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask ivalLoop], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask collisionLoop], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask garbageCollectStates], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask igLoop], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask audioLoop], taskChain = None
:Messenger(debug): sent event: TaskManager-addTask sentArgs = [PythonTask eventManager], taskChain = None
:Messenger(debug): sent event: mouse1 sentArgs = [], taskChain = None
:Messenger(debug): sent event: time-mouse1 sentArgs = [1.2402593753895987], taskChain = None
:Messenger(debug): sent event: mousedev1-mouse1 sentArgs = [], taskChain = None
:Messenger(debug): sent event: mouse1-up sentArgs = [], taskChain = None
:Messenger(debug): sent event: time-mouse1-up sentArgs = [1.3079306714880812], taskChain = None
:Messenger(debug): sent event: mousedev1-mouse1-up sentArgs = [], taskChain = None
:Messenger(debug): sent event: escape sentArgs = [], taskChain = None
Exiting
After pressing escape, no other events are generated by keyboard/mouse, although the window is still open.
Once I force stopped the process, the window closes and “[Finished in …]” message appeared in my console.