0

嗨我正在编写一个简单的国际象棋程序,不幸的是我遇到了一些意想不到的问题,即。在我添加了一个跟踪所有数字位置的列表后,我无法使用我现在使用的方法关闭窗口。这是:

  for event in pygame.event.get():
    # print(event)
    # Checking if the user clicks the red quit cross
    if event.type == pygame.QUIT:
        # run control the mainloop, wheather True or not 
        run = False

添加列表后,它停止工作,所以我现在使用:

for event in pygame.event.get():
    # print(event)
    if event.type == pygame.QUIT:
        pygame.display.quit()
        pygame.quit()

我尝试添加一些异常处理:

try:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.display.quit()
except pygame.error():
    print('Program closed')

但是没有达到except语句并打印错误:(pygame.error:视频系统未初始化)

你能告诉我如何正确处理这个异常,或者建议一种不同的方式来制动主循环。

4

2 回答 2

1

从异常捕获中删除(),即: except pygame.error而不是except pygame.error()

于 2020-09-11T17:00:16.717 回答
0

我实际上是自己想出来的,所以以防万一有人在寻找答案。问题是我试图在 pygame.display.quit() 之后调用重绘函数。因此,在移动了 redraw 调用和 keys = pygame.key.get_pressed() [wich 也使用了模块 pygame] 之后,程序在没有任何错误调用的情况下终止。代码应如下所示:

while run:
    pygame.time.delay(100)
    window_redrawing()

    # Gathering user keyboard input
    keys = pygame.key.get_pressed()

    # making sure the window can be closed
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.display.quit()
            run = False

    fig_pos.clear()
于 2020-09-11T20:45:06.110 回答