【问题标题】:Pygame Is Installed Properly, But Why Does It Not Display Anything?Pygame 安装正确,但是为什么什么都不显示?
【发布时间】:2020-04-14 18:21:48
【问题描述】:

人类同胞!

我最近安装了 pygame,遵循 Bryson Payne 制作的精彩指南,您可以找到 here。我按照说明中的顺序安装了以下所有依赖项和程序。

  1. 已安装 XQuartz
  2. Homebrew 已经安装(这是第二步)。
  3. 从 homebrew 安装了一个 python 3 版本,专门用于 pygame
  4. 在终端中执行了以下命令:brew install mercurial、brew install sdl sdl_image sdl_mixer sdl_ttf portmidi、brew tap homebrew/headonly(这个命令失败了,但是 pygame 仍然让我下载它!我读了如果我没有这个,它不应该让我下载,所以我只是刷掉它。如果你认为这是问题,告诉我!),最后,brew install smpeg
  5. 然后,sudo pip3 install hg+http://bitbucket.org/pygame/pygame。这在第一次运行时不起作用,所以我通过“pip3 install pygame”安装了它,它起作用了。然后我再次尝试了原来的命令,这次确实下载了。

此外,我之后通过终端安装了 pgzero,然后通过项目解释器安装到 pycharm。对普通的 pygame 也是如此。而且,奇怪的事情发生了。据称启用了 pygame 的 IDLE(python 3.7)实际上不起作用。然后我尝试使用我之前拥有的另一个 IDLE,3.8.2,并且确实有效。

在不久前(大约 2 周)的第一次尝试中,我真的没有考虑太多安装,因为它已正确下载。然后,当我尝试在 PyCharm 和 IDLE 上运行我的简单程序时,都没有成功! IDLE 上的代码没有显示错误消息... IDLE 只是运行了代码,但什么也没发生,因为 python 开始运行程序:但几分钟后出现,代码什么也没做。出现以下执行程序的窗口。

The window that executes programs

但是运行相同代码的 PyCharm 会显示不同的消息。如下(注意.py文件上方的位置,是要使用的照片)。

See the image here

新窗口没有显示 >>> 提示,即使让它运行了几分钟。 Python Launcher 在 Dock 上弹跳,就像在加载一样,直到 3 分钟后停止。

The python launcher bouncing

所以,澄清一下,代码运行没有错误,但没有显示,甚至是基本窗口! 这发生在各种小程序中。以下是一些示例。

import pygame
background_colour = (255,255,255)
(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Tutorial 1')
screen.fill(background_colour)
pygame.display.flip()
running = True
while running:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      running = False

我还运行了一些更复杂的程序,例如“Python 任务”一书中的程序。您可以下载游戏文件here

我跑的另一个小程序是:

import pygame
pygame.init()
img =pygame.image.load('astronaut.png')
display = pygame.display.set_mode((400, 400))
display.blit(img, [0, 0])
pygame.display.update()

最后一个是……

import pygame as pg
import sys

pg.init()
screen = pg.display.set_mode((800,600))
done = False
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True

    pg.display.update()
pg.quit()
sys.exit()

在这些失败之后(程序没有运行),我卸载并再次安装了 pygame 和 pgzero(在 IDLE 和 PyCharm 中)。 3次(没有一个有效)。每次安装后,我都重新启动了计算机。见鬼!我什至尝试通过各种方法安装(如 sudo pip3 install pygame、pip3 install pygame、sudo pip install pygame,最后是 sudo pip3 install pygame)。当我尝试使用 pip3 安装它时,它安装了 pygame,而当我尝试仅使用 pip 时,它也安装了 pygame(这是一个接一个命令完成的)。

我寻求帮助,因为我所有的开发软件/IDE 都支持 pygame(毕竟,它们不会显示任何错误消息)。那会是什么?该代码是从 pygame 文档中复制的,该文档建议使用其中一些 sn-ps 代码来证明 pygame 工作正常。真的,我很绝望,因为我的目标只是让 pygame 工作。

是我对图像的使用不正确吗?但我将文件存储在与图像相同的目录(同一文件夹)中。我按照我的书调用我的图像(这仅适用于之前链接的 Mission Python 文件中的较长程序)


请记住,主要问题是 pygame 已启用但不显示。前面的文字只是我为解决这个问题所做的一些事情。


是不是 brew tap homebrew/headonly 命令不起作用?我还能做些什么来替换这个命令并让 pygame 工作?

【问题讨论】:

  • 我在这里没有任何特别的见解可以提供,但我注意到您所遵循的指南已有五年多的历史了。这是软件开发生命周期中的一段很长的时间,所以它可能已经过时了。

标签: python-3.x pygame pycharm python-idle macos-catalina


【解决方案1】:

可能有很多原因,所以我会解决我能想到的。


您的代码立即退出。

运行以下代码(或类似结构的代码)时,

import pygame
pygame.init()
img =pygame.image.load('astronaut.png')
display = pygame.display.set_mode((400, 400))
display.blit(img, [0, 0])
pygame.display.update()

代码将立即退出,因此您永远不会注意到游戏实际运行。它只会在终止之前运行几分之一秒。您必须有某种形式的循环才能保持打开状态。这似乎是您的大多数示例中的问题(例如,当您运行 IDLE 时)。

我建议您尝试使用此代码

import pygame
pygame.init()

screen  = pygame.display.set_mode((800, 600))
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((255, 0, 0))
    pygame.display.update()

您应该会看到一个红色窗口。


您的图片路径错误或名称错误。

根据您的一张图片,您无法加载图片。这意味着程序正在运行,但它找不到图片rescue_ship.png。从 IDE 运行时,可以通过相对于项目根目录的相对路径访问所有文件。

我不知道你的情况是什么,但我建议你尝试改用 absolute 路径,看看它是否有效。您也可能拼错了图像名称;必须准确。


你错了python版本。

确保您没有意外使用 Python 3.8。我不认为 pygame 支持它,而且我看到许多其他问题在使用它时遇到问题。这可能很难注意到,因为一切都会正常工作,直到突然不行。

另外,请确保您使用的是安装了 pygame 的 Python 版本。例如,我有 Python 3.5、3.6 和 3.8,但只有 Python 3.5 安装了 pygame。因此,如果我使用 Python 3.6 运行我的 pygame 脚本,它将无法工作(它会抱怨 “No module named pygame”)。

【讨论】:

  • 谢谢!我会尽快做。不过我只有一个问题:IDLE 没有集成的主循环吗?
  • IDLE 有一个用于 tkinter,但没有用于 pygame。我还建议根本不要使用 IDLE。这真的不是一个好软件。我建议你应该使用 Pycharm,或者试试 Sublime、Atom、Visual Studio Code 或类似的 IDE。
  • 我正在尝试...只是想我会以 IDLE 作为参考点。
  • P.D. @TedKleinBergman 参考显示 pycharm 错误的图像,看看它写得很好?。最后,什么是绝对路径?
  • 绝对路径是相对于根的路径(即'/')。例如 /Users/santiagoroberto/Documents/PycharmProjects/MyGame/images/rescue_ship.png。相对路径因工作目录的位置而异。如果您在目录 /Users/santiagoroberto/Documents/PycharmProjects/MyGame 中,则图像的相对路径将是 images/rescue_ship。 png (注意它不以'/'开头)。如果您在目录 /Users/santiagoroberto/Documents/PycharmProjects/MyGame/images 中,则图像的相对路径将是 rescue_ship .png
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2016-02-06
  • 2011-10-23
  • 1970-01-01
相关资源
最近更新 更多