PyGame 窗口停止显示

问题描述

我一直在学习 Python 并决定玩转 PyGame。当我运行脚本时,PyGame 窗口随机停止显示。我没有收到任何错误或任何消息,只是不会出现 PyGame 窗口。以前的脚本可以工作,现在不行了。我之前遇到过这个问题,并重新启动了我的电脑几次,最终它又开始工作了。但它再次发生。所以我不知道是什么导致了它,也不知道如何修复它。我已经用两个不同的 PyGame 脚本尝试过,但都不起作用。我将在下面发布一个示例脚本。我使用的是 PyGame 2.0.1 版、SDL 2.0.14 版、Python 3.7.3 版,我的操作系统是 Windows 10,我使用的是 PyCharm。我知道 PyGame 版本 2 是新的,这是新版本的错误吗?感谢您的帮助。

编辑:再次重新启动计算机在短期内解决了该问题。我仍在寻找问题的长期解决方案,这样我就不必每次发生这种情况时都重新启动计算机。

这是一些示例代码

import pygame,sys
pygame.init()
windowSize = sizeW,sizeH = 1920,1080
window = pygame.display.set_mode(windowSize)
pygame.display.set_caption('Test')
black = 0,0
speed = 0.2
x,y = 50,50
h,w = 50,50
blue = 0,255

guy = pygame.image.load('tile032.png')

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT] and x - speed > 0:
        x -= speed
    if keys[pygame.K_RIGHT] and x + w + speed < sizeW:
        x += speed
    if keys[pygame.K_UP] and y - speed > 0:
        y -= speed
    if keys[pygame.K_DOWN] and y + speed + h < sizeH:
        y += speed

    window.fill(black)
    window.blit(guy,(x,y))
    pygame.display.update()

解决方法

正确处理关闭窗口,使用pygame.quit()。

for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
,

当您在调用 pygame 窗口后立即退出该窗口时,通常会出现此问题。只有在 run 变量变为 False 后才可以通过退出 pygame 来解决它。要么在程序结束时或在 run 函数定义为 false 后创建逻辑。