为什么我的pygame图像不加载?
我在网上(YouTube上)找到一个教程,它教我用pygame创建游戏的基本知识。我找到了他提到的那些图片,但他没有说应该把它们保存到哪里,我觉得这可能是我遇到问题的原因。这里有一个我在程序中用的例子,以及出现的错误信息。
bif="bg.jpg"
mif="images.png"
import pygame, sys
from pygame.locals import *
pygame.init()
screen=pygame.display.set_mode((420,315),0,32)
backround=pygame.image.load(bif).convert()
mouse_c=pygame.image.load(mif).convert_alpha()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.blit(backround, (0,0))
x,y = pygame.mouse.get_pos()
x -= mouse_c.get_width()/2
y -+ mouse_c.get_height()/2
screen.blit(mouse_c, (x,y))
pygame.display.update()
错误信息是:
Traceback (most recent call last):
File "C:/Python26/pygame.games/pygame
1", line 10, in <module>
backround=pygame.image.load(bif).convert()
error: Couldn't open bg.jpg
请尽快回复我。
5 个回答
你可以选择忽略这些内容,或者根据你的情况只读一部分。
print pygame.image.get_extended()
把输出结果当作参考,可能会对你有帮助,具体取决于你遇到的某些问题。
试着把文件所在的目录/文件夹的完整路径添加进去。如果这样能解决问题,可能是因为Python没有在你的路径中,或者你只是需要找到那个目录/引导Python去那里。
尝试保存、读取和/或写入一个文件。如果在保存时它自动假设在同一个驱动器上,那你可能就没问题,只需要引导Python到它所在的文件夹/目录。通常情况下,如果你把.py文件保存在和图片完全相同的目录下,是不会有问题的。
做个测试,搜索一下如何读取和写入文件,试着创建一个简单的.txt文件。
你也可以使用Tkinter中的文件保存/打开/新建对话框,看看它默认保存或打开文件的位置。
如果Python不在你的路径中,有很多教程和方法可以添加它。有些方法包括使用操作系统自带的图形界面、命令提示符/Bash,甚至还有一些工具可以让这个过程更简单,只需搜索一下如何将Python添加到路径中。你也可以选择彻底卸载,意思是删除所有东西,然后再重新安装。
如果有两个不同的驱动器,可能会让事情变得复杂。你应该根据上面的测试看看Python使用的是哪个驱动器。确保你当前的文件和图片都保存到同一个目录下。
如果安装了多个版本的Python,可能会让事情变得复杂。即使你卸载了Python,有时候在Windows中并不是所有东西都会被卸载,特别是从Windows市场下载的版本可能会搞乱一切。如果是这种情况,我建议你直接卸载、删除,然后重新安装并添加到路径中。
有时候使用第三方的IDLE可以让事情变得更简单。我觉得在处理路径问题时,Pycharm是最简单的。如果我没记错的话,它会让你创建虚拟环境,这也是解决问题的另一种方法(搜索一下venv)。如果一切都失败了,那可能是出现了奇怪的问题,你可以选择删除所有Python的痕迹,重新安装,确保没有留下任何痕迹,并在安装时添加到路径中。
关于把文件放在Python库文件夹里的建议完全是错误的。不要这样做,这几乎和保存到根目录是一样的。如果你的程序需要整个Python库文件夹,那你怎么发布任何东西呢?如果我是那个人,早就因为这个评论感到尴尬而删除它了。
我也遇到过这个问题,是因为从Windows市场下载了一个3.x版本。它居然把Python的.exe文件直接保存到了Windows文件夹里,还有其他奇怪的事情。这让我非常沮丧,修复起来也很困难,因为它安装得太奇怪了,我记不清从安装程序和市场上分别下载了哪个版本。我建议你避免使用市场,我也遇到过一些奇怪的Windows子系统和“Linux”发行版。
在程序运行的时候,查看一下当前的工作目录是个好主意,可以用 os.getcwd()
这个命令。找到当前的工作目录后,就可以在这个路径下添加相关的资源文件。比如,你可以把背景图片 bg.jpg 放在 <cwd>/python/game/assets/
这个位置,然后这样写:
bif=r"python/game/assets/bg.jpg"
根据这段代码,你的图片文件需要和游戏的 .py 文件放在同一个文件夹里。试着把它们移动到那里。
为了确认一下(确保图片能正常加载,并且确实是路径问题),你可以暂时在代码里写一个绝对路径来指定图片的位置,也就是说,不要用
bif = "bg.jpg"
而是用
bif = "C:/My_game/images/bg.jpg"
不过,记得把第二部分改成你实际存放图片的地方。一旦你确认用绝对路径能加载图片后,就应该改用相对路径。如果你有很多资源文件,最好把它们和代码分开存放,比如可以在和游戏代码同一个文件夹里新建一个 assets
文件夹,或者类似的做法。
bif = "assets/bg.jpg"