关于pygame中pygame.image.load()的问题

在vscode中,使用pygame.image.load()加载相对路径的图片,提示报错,但使用绝对路径却可以。
如何解决相对路径无法加载的问题?(在不改变原图片存放位置的情况下)

path = 'images/bg.jpg'
bg = pygame.image.load(path)

最后提示:

pygame.error: Couldn't open images/bg.jpg

可能你的编译器默认工作路径不是当前路径,可以在最开头加上这么一行:
os.chdir(os.path.dirname(sys.arvg[0]))
chdir()括号里面的是当前py程序路径的目录路径(上级路径),函数chdir()把该路径设为当前工作路径。然后在调用pygame.image.load()时编译器就会在当前目录下查找。

btw,任何时候都不推荐使用绝对路径,环境变一下你的程序就完蛋。

后面还要刷新一下

单斜线要改成双斜线

你用的是不是VS code?

在使用相对路径加载图片时,需要注意相对路径是相对于当前 Python 文件的路径,而不是相对于项目根目录的路径。如果图片文件不在当前 Python 文件所在的目录中,就会出现无法加载图片的问题。

为了解决这个问题,可以使用 os.path 模块来获取当前 Python 文件的绝对路径,并将相对路径转换为绝对路径,然后再使用 pygame.image.load() 加载图片。

以下是一个示例代码,演示如何使用 os.path 模块来加载图片:

python
Copy
import os
import pygame

# 获取当前 Python 文件的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))

# 定义相对路径
path = 'images/bg.jpg'

# 将相对路径转换为绝对路径
abs_path = os.path.join(current_dir, path)

# 加载图片
bg = pygame.image.load(abs_path)

# 在窗口上显示图片
screen = pygame.display.set_mode(bg.get_size())
screen.blit(bg, (0, 0))
pygame.display.flip()

# 等待窗口关闭
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

以上代码中,current_dir 变量用于获取当前 Python 文件的绝对路径,path 变量用于定义相对路径,os.path.join() 函数用于将相对路径和当前 Python 文件的绝对路径拼接成完整的路径,最后将完整路径传递给 pygame.image.load() 函数来加载图片。

是不是应该

path = './images/bg.jpg'