当前位置: 首页 > 知识库问答 >
问题:

PyGames安装正确,但为什么它不显示任何内容?

姜正初
2023-03-14

人类同胞们!

我最近安装了pyGames,遵循Bryson Payne制作的令人敬畏的指南,您可以在此处找到。我按照说明中的顺序安装了以下所有依赖项和程序。

    < li >已安装的XQuartz < li >已经安装了Homebrew(这是第二步)。 < li >安装了一个来自homebrew的python 3版本,专门用于py game < li >对终端执行了以下命令:brew install mercurial,brew install SDL SDL _ image SDL _ mixer SDL _ TTF port midi,brew tap homebrew/headonly(此命令失败,但pygame还是让我下载了!我读到如果我没有这个,它不应该让我下载,所以我只是刷掉它。如果你认为这是问题所在,告诉我!),最后,brew安装smpeg < li >然后,sudo pip3安装Hg http://bitbucket.org/pygame/pygame.这在第一次运行时不起作用,所以我通过“pip3安装pygame”安装它,它起作用了。然后我再次尝试最初的命令,这次它下载了。

此外,我后来通过终端安装了pgzero,然后通过项目解释器安装到pycharm。正常的pygame也一样。然后,发生了一些奇怪的事情。假定启用了pygame(python 3.7)的IDLE实际上不起作用。然后我尝试使用我之前使用的另一个IDLE,3.8.2,这确实有效。

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

执行程序的窗口

但是运行相同代码的PyCharm显示了不同的信息。它是这样的(注意在。py文件,有要用的照片)。

在此处查看图片

新窗口未显示

蟒蛇启动器弹跳

因此,为了澄清,代码运行时没有错误,但没有显示,甚至是一个基本的窗口!各种小程序都是这样。以下是一些例子。

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

我还运行了一些更复杂的程序,比如《Mission Python》一书中的程序。您可以在此处下载游戏文件。

我运行的另一个小程序是:

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安装pygame,pip3安装pygame,sudo pip安装pygame,最后,sudo pip3安装pygame)。当我尝试使用 pip3 安装它时,它安装了 pygame,当我尝试仅使用 pip 时,它还安装了 pygame(这是一个接一个的命令)。

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

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

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

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

共有1个答案

毋承基
2023-03-14

可能有许多原因,所以我将解决我能想到的一个。

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

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运行时,所有文件都可以通过相对于项目根目录的相对路径访问。

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

确保你没有偶然使用Python 3.8。我不认为py游戏支持它,我见过许多其他使用它有问题的问题。这可能很难注意到,因为一切都会正常工作,直到它突然不工作。

此外,请确保您使用的是安装了py游戏的Python版本。例如,我有Python 3.5、3.6和3.8,但只有Python 3.5安装了pyGames。因此,如果我使用Python 3.6运行我的py游戏脚本,它将无法工作(它会抱怨“没有名为py游戏的模块”)。

 类似资料:
  • 问题内容: 我已经开发了一个小应用程序来跟踪我的日常工作活动,该工具包含两个类: 执行者 UIProgress 我的目标是创建一个ProgressBar来更新执行状态,使用的逻辑如下所示, 根据Executor类中定义的executeTask(),我创建了UIProgress对象。 UIProgress类扩展了JFrame。创建一个面板,其中包含带有一个图像的标签和进度条。我已经在此类中定义了一个

  • 我开发了一个小应用程序来跟踪我的日常工作活动,该工具包含两个类: 遗嘱执行人 我的目标是创建一个更新执行状态的ProgressBar,下面给出了使用的逻辑, 从Exector类中定义的执行任务()中,我创建了UIProgress对象。 UIProgress类扩展了JFrame。创建一个包含带有一个图像和进度条的标签的面板。我在这个类中定义了一个方法updateProgress,它设置了进度条的值。

  • 我使用fiddler监控一个简单的html内容从一个PHP文件运行在localhost。但是每当我按f5刷新页面(浏览器)时,在fiddler中有时整个web会话的字体变成蓝色,即当它实际显示内容(html)时,相反的情况发生在web会话是灰色的时候,它不显示html内容。 注意:始终显示请求/响应标题,这仅用于内容。我还尝试了点技巧(“:80”)并从localhost切换到127.0。0.1.

  • 我正试图将maven V3.5.4安装到我的计算机上,每当我尝试'mvn-version'命令时,我会得到 “MVN”不被识别为内部或外部命令、可操作程序或批处理文件。 我已经查阅了关于如何做到这一点的多个教程,他们提供了几乎相同的信息。添加系统变量M2和M2_HOME,然后向Path系统变量追加一个目录。我将系统变量配置为: null null null null 我的路径变量是: 我不知道如何

  • 有人能告诉我代码有什么问题吗?它只显示第一行和表头information.thks

  • 我正在尝试使用一个名为'jQuery.InstagramFeed'的库,它允许我在不使用访问令牌的情况下显示用户feed中的图像。所以,我一直在尝试使用它,但是,出于某种原因,它并没有向我展示任何东西。 我已经研究了几个星期了,我已经尝试了在这里的很多帖子(以及其他论坛)中提出的很多解决方案,比如下面这些: TypeError:$不是函数调用jQuery函数 “未捕获的TypeError:$不是函