我打開一個窗口的Pygame並得出一些東西,它與pyopengl要求是這樣的:關閉窗口Pygame的不退出
def run(facets, SCREEN_SIZE=(800, 600)):
pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE, HWSURFACE|OPENGL|DOUBLEBUF)
glViewport(0, 0, SCREEN_SIZE[0], SCREEN_SIZE[1])
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(SCREEN_SIZE[0])/SCREEN_SIZE[1], .1, 1000.)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
clock = pygame.time.Clock()
glMaterial(GL_FRONT, GL_AMBIENT, (0.1, 0.1, 0.1, 1.0))
glMaterial(GL_FRONT, GL_DIFFUSE, (1.0, 1.0, 1.0, 1.0))
pygame.mouse.set_visible(False)
pygame.event.set_grab(True)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
pygame.display.quit()
print "returning..."
return
if event.type == KEYUP and event.key == K_ESCAPE:
pygame.quit()
pygame.display.quit()
print "returning..."
return
pygame.mouse.set_visible(False)
# Clear the screen, and z-buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
# other game loop code here, e.g. rendering the facets
# and moving the viewport around.
我留在幾乎所有的pygame的和pyopengl電話我做,在他們中的任何一個都是相關的。
什麼,我想發生:處於運行狀態bpython/IDLE /交互式Python提示符會話,打電話run()
和看東西,打ESC
並將它關閉該窗口,並返回我對我的提示。
到底發生了什麼:運行我的互動環節,建立數據結構,稱之爲run()
,看的東西,打ESC
和窗口關閉,但隨後立即重新打開。唯一的辦法是殺死python進程(這不僅會殺死我的交互式會話,而且會在bpython中讓我的shell窗口無法運行。)注意,我也做在現在不存在的shell中看到print "returning..."
的結果。
我看到這些問題:
,但他們只讓我相當偏執:是pygame的真的那麼資源漏泄,你必須退出蟒蛇讓它清理它的爛攤子?
另外,什麼黑暗的魔法導致我的return
來電不返回?
最後,任何人都可以告訴我如何以我想要的方式使這項工作?即使是完全邪惡的不受支持的黑客也沒問題,現在,因爲我只需要使用此3D渲染器來調試其他代碼,以瞭解我在做什麼!
相信IDLE有一些事情,像這樣的問題。你可能會從命令行運行更好的運行,做同樣的事情。 – ninMonkey
(問題實際上並不存在,請參閱我的答案。) – tehwalrus