Pygame,屏幕只在退出pygame窗口时更新?

时间:2015-07-02 08:55:25

标签: python python-3.x pygame python-3.3

我对pygame很新,我需要一些帮助,因为我的代码工作不正常。

好的,这就是问题所在:我希望屏幕在运行时变为白色,但它仍然是黑色,但是当我按下出口时,它会变成白色大约一秒然后关闭。

这也发生在我放一张照片(如player.png)它出现前大约一秒钟。我不知道我做错了什么,

请帮助修复代码并解释它为什么会发生?

这是代码:

import pygame

pygame.init()

screen = pygame.display.set_mode((640,480))
image = pygame.image.load('player.png')
gameExit = False
gameLoop = True

pygame.display.update()
white = (255,255,255)

while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
        gameExit = True

    for event in pygame.event.get():
        screen.fill(white)







pygame.display.update()




pygame.quit()
quit()

PS。我没有收到任何错误

2 个答案:

答案 0 :(得分:1)

Python是缩进敏感的。在您的代码中,只有在主循环结束后才会调用pygame.display.update()

此外,如果两个for循环之间的事件队列中有事件,则只绘制背景白色,然后填充队列中每个事件的背景。

请注意,这也可能导致第二次循环“吞下”QUIT事件。

所以这个

while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
        gameExit = True

    for event in pygame.event.get():
        screen.fill(white)

pygame.display.update()

应该是

while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True

    screen.fill(white)

    pygame.display.update()

答案 1 :(得分:0)

好的,所以我同意Sloth的意见,但是不要在最后进行所有的屏幕更新和填充以及blitting,使脚本的可读性降低,你应该像animate函数那样在最后运行每次while循环,并在该函数中放置blitting和screen更新内容。对于连续判刑感到抱歉。

哦,你不需要你的GameLoop变量。