Pygame - "错误:显示Surface quit"

时间:2017-03-19 20:36:00

标签: python-2.7 pygame

我已经制作了一个菜单屏幕,点击按钮会在同一个窗口中显示不同的屏幕

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),但我对如何防止错误没有进一步的想法。

我感谢任何帮助。对不起,如果看起来很简单。

1 个答案:

答案 0 :(得分:1)

几种可能性:

  • 结束sys.exit()函数中的处理(例如view)。不理想。
  • view函数返回一个值,表示应用程序应该结束(例如return done),并检查main函数中的返回值(if done: return )。更好。
  • done设为全局,并在main函数中检查其值。我真的不喜欢这个解决方案。
  • 我的最爱:完全避免多个事件循环,因此问题解决了(所以你可以通过返回退出main函数)。