仅退出 Pygame 窗口
Posted
技术标签:
【中文标题】仅退出 Pygame 窗口【英文标题】:Exiting only Pygame window 【发布时间】:2014-02-09 22:21:04 【问题描述】:我正在使用 GUI 运行 Pygame 窗口。例如,当用户单击 GUI 上的按钮时,会出现 Pygame 窗口。但是,当我想退出 Pygame 窗口时,我的 GUI 也会退出。我确定这是因为以下代码行:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
sys.exit() 退出一切,这就是 IDE 关闭 Pygame 窗口的原因。但是我如何只关闭 Pygae 窗口?我试过这个:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
break
但这不起作用。有什么建议吗?
使用 Pyqt4 和 Python 3 的图形用户界面。
【问题讨论】:
什么“不起作用”?有什么建议? 我的替代代码只关闭 Pygame 窗口而不是 pygame 窗口和 GUI 窗口 当然:但是在第二种情况下实际发生了什么? pygame 窗口是否关闭,既不关闭窗口,也关闭两个窗口,或者究竟是什么? 它关闭了,但在无休止地尝试单击 X 按钮之后。它不会像使用 sys.exit 那样顺利关闭,后者会关闭所有内容。 显示退出应用程序事件循环的代码 【参考方案1】:我猜你的代码是 sn-p
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
break
是你的主循环的一部分,在while
循环中运行,就像
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
break
问题是break
将退出for
循环,而不是while
循环,最终导致异常,因为您退出 pygame 但可能正在尝试绘制屏幕等。
一个简单的解决方法是使用变量作为while
循环的条件,例如
quit = False
while not quit:
for event in pygame.event.get():
if event.type==pygame.QUIT:
quit = True
...
或确保退出 while
循环
while True:
if pygame.event.get(pygame.QUIT): # only check for QUIT event
break
for event in pygame.event.get():
...
【讨论】:
以上是关于仅退出 Pygame 窗口的主要内容,如果未能解决你的问题,请参考以下文章