无法在pygame中打开.png文件

时间:2014-11-30 20:54:13

标签: python image pygame

我用powerups制作了一个pong游戏,它可以在windows中运行,但在linux中,它给出了错误“无法打开paddle.png”。

同样,它适用于Windows,但不适用于Linux。

代码示例: - 代表代码的一部分,而不是整个代码

import pygame, sys, time
from random import *

pygame.init()

disw = 640
dish = 480
black = (  0,  0,  0)
white = (255,255,255)
green = (  0,255,  0)

gameDisplay = pygame.display.set_mode((disw, dish))
pygame.display.set_caption("Super-Pong", "S-P")
Clock = pygame.time.Clock()

playerOne = pygame.image.load("paddle.png")
playerOneX = 50
playerOneY = 180

playerTwo = pygame.image.load("paddle.png")
playerTwoX = 590
playerTwoY = 180

问题:无法在Linux中为python程序打开.png文件。

尝试:在Windows中运行,在Windows中工作。

他们也在同一个目录中。

我也尝试过制作paddle.jpg和其他几种格式,没有骰子。

我的错误:

[hunter@localhost ~]$ su -
Password: 
Last login: Sun Nov 30 16:56:52 EST 2014 on pts/0
[root@localhost ~]# python /home/hunter/Documents/realprojects/superpong/Super-Pong.py
Traceback (most recent call last):
  File "/home/hunter/Documents/realprojects/superpong/Super-Pong.py", line 16, in <module>
    playerOne = pygame.image.load("paddle.png")
pygame.error: Couldn't open paddle.png
[root@localhost ~]# 

2 个答案:

答案 0 :(得分:3)

当您告诉Python库中的函数加载具有相对路径的文件(例如"paddle.png")时,它将查看当前工作目录(CWD)。如果您在CWD是用户root的主目录时启动Python程序,Pygame将在用户root的主目录中查找图像文件,除非另有说明。

要改变Pygame查找图像的位置,您需要执行以下三项操作之一:

  • 在运行cd之前,将当前工作目录(paddle.png)更改为包含Super-Pong.py的目录。当您双击Python程序时,Python for Windows会自动执行此操作,这就是它在Windows中运行的原因。
  • 在程序中,将当前工作目录更改为包含paddle.png的目录,该目录可能与包含程序(Super-Pong.py)的目录相同。程序的路径以sys.argv[0]传递,因此请尝试以下操作:os.chdir(os.path.dirname(__file__))
  • 在程序中,添加文件的路径。同样,假设paddle.png位于同一文件夹中,请尝试以下操作:playerOne = pygame.image.load(os.path.join(os.path.dirname(__file__), "paddle.png"))

(为什么su -呢?游戏不需要以超级用户身份运行。)

答案 1 :(得分:0)

我知道我有点迟了,但对于今天仍然遇到此问题的人,请尝试在图片名称中添加一个数字(例如paddle1.png)。我知道它看起来很奇怪,但它实际上是因为某种原因而修复了它,它可能不会为你修复它...