我已经制作了一个菜单屏幕,点击按钮会在同一个窗口中显示不同的屏幕。
def main():
import pygame, random, time
pygame.init()
size=[800, 600]
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Game")
done=False
clock=pygame.time.Clock()
while done==False:
for event in pygame.event.get():
pos = pygame.mouse.get_pos()
if event.type == pygame.QUIT:
done=True
break
if button_VIEW.collidepoint(pos):
if event.type == pygame.MOUSEBUTTONDOWN:
print("VIEW.")
view()
break
screen.fill(black)
...
def view():
done=False
clock=pygame.time.Clock()
while done==False:
for event in pygame.event.get():
pos = pygame.mouse.get_pos()
if event.type == pygame.QUIT:
done=True
break
...
如果可能的话,我想知道如何避免错误:
screen.fill(black)
error: display Surface quit
>>>
在这里查看其他问题之后,我尝试将break
添加到任何循环的出口,但仍然会发生错误。
我理解问题是该程序在窗口关闭后尝试执行screen.fill(black)
,但我对如何防止错误没有进一步的想法。
我感谢任何帮助。对不起,如果看起来很简单。
答案 0 :(得分:1)
几种可能性:
sys.exit()
函数中的处理(例如view
)。不理想。view
函数返回一个值,表示应用程序应该结束(例如return done
),并检查main
函数中的返回值(if done: return
)。更好。done
设为全局,并在main
函数中检查其值。我真的不喜欢这个解决方案。main
函数)。