我的程序不仅使用Pygame,还使用Tkinter,所以当Pygame窗口运行时,我有一个Tkinter窗口在运行。在Pygame代码中执行sys.exit()
来停止pygame.error: video system not initialized
错误是常见的做法,以下面的代码片段为例。这样做的问题是,如果你不只是运行pygame代码,这个"解决方案"将停止代码中的一切,而不仅仅是pygame窗口。(仅供参考,这个错误不会使程序崩溃或停止,所以它只是一个控制台的事情,但它仍然很烦人)。
import pygame, sys
while True: # event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
那么,是否有sys.exit()
的替代方案,只退出pygame代码?
sys.exit()
终止解释器。pygame.quit
取消初始化所有pygame模块。一旦调用了pygame.quit()
,调用任何其他pygame语句都会导致异常。在应用程序循环之后调用pygame.quit()
并删除sys.exit()
:
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# [...]
pygame.display.update()
pygame.quit()