如何仅退出pygame窗口而不是整个代码?



我的程序不仅使用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()

最新更新