【问题标题】:When I run my Python program, the pygame window opens for a split second then quits当我运行我的 Python 程序时,pygame 窗口会打开一瞬间然后退出
【发布时间】:2017-08-15 17:38:02
【问题描述】:

我是一名初级程序员,尝试通过在线课程使用 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。我检查了很多次,我的代码与在线课程的代码完全匹配。我使用的是 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

【问题讨论】:

  • 你是如何运行代码的?您可能需要从终端运行它才能看到任何错误。
  • 当我运行你的代码时,一个窗口保持打开状态,左上角有一个蓝色方块。一秒钟后它不会关闭
  • 我通过单击运行选项卡然后单击“运行模块”来运行它。可能是我的电脑。
  • 在包含您的 .py 文件的目录中打开一个终端窗口并输入 python name_of_your_file.py 运行它。如果您看到任何错误消息,请在此处发布。

标签: python python-2.7 crash pygame exit


【解决方案1】:

好的,我已经对您的问题进行了一些搜索,得出的结论是您需要尝试以下操作:

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

【讨论】:

  • 感谢您的帮助,但这些都不起作用。当我打印事件时,我得到: 我很确定这一定是我的 Mac 的问题,如果确实如此,我想知道您是否可以回答我将在稍后发布的问题。
猜你喜欢
  • 2022-08-17
  • 2021-12-30
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多