我是一个刚开始尝试通过在线 class 使用python和pygame制作游戏的程序员。但是,当我运行以下代码时,pygame窗口将打开一秒钟,然后关闭。
import pygame
pygame.init()
screen = pygame.display.set_mode((900,700))
finished = False
while finished == False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
finished = True
rectOne = pygame.Rect(0,0,30,30)
color = (0,0,255) #R,G,B
pygame.draw.rect(screen,color,rectOne)
pygame.display.flip()
我也没有收到任何错误消息。就像它运行我的循环一次,然后将
finished
更改为True
一样。我已经检查了很多次,并且我的代码与在线 class 的代码完全匹配。我正在使用Mac和Python 2.7.13。有人可以帮忙吗?更新:我不确定这是否有帮助,但是我仍然可以运行下面的代码,并且可以正常运行。
导入pygame
pygame.init()
screen = pygame.display.set_mode((900,700))
finished = False
while finished == False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
finished = True
最佳答案
好的,我对您的问题进行了一些搜索,得出的结论是您需要尝试以下操作:
A)使用pygame.display.update()
代替pygame.display.flip()
B)尝试将它们放在程序的主循环之外:pygame.QUIT
和下一行quit()
C)如果我的上述推测均无效,那么您需要检查QUIT事件是否被自动触发,可通过更改while
循环如下来实现:
while not finished:
for event in pygame.event.get():
print(event)
之后,当您运行程序时,将在Shell中显示pygame屏幕上发生的事件,如果有问题,则第一个和最后一个事件将是QUIT,然后可能是Mac或版本问题,因为我最近在reddit上阅读过有关它的内容,所以请查看here
关于python - 当我运行Python程序时,pygame窗口打开片刻,然后退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45698376/