Я не могу импортировать фотографию с каталогами - PullRequest
1 голос
/ 01 мая 2019

Мой код получает эту ошибку всякий раз, когда я ее набираю:

Traceback (most recent call last):
  File "C:\Users\chris\Desktop\Passion Project Files\Passion-Project.py", line 16, in <module>
    self.image = pygame.image.load("C:Users\chris\Desktop\Passion Project Files\Resources\bg.jpg").convert()
pygame.error: Couldn't open C:Users\chris\Desktop\Passion Project Files\Resources\bg.jpg

, а вот мой код:

   import random
import os
import pygame
from pygame.locals import *

pygame.init()

width, height = 640, 480
screen = pygame.display.set_mode((width, height))

pygame.display.set_caption("PP Example")

done = False
clock = pygame.time.Clock()

game_folder = os.path.dirname(__file__)
image_folder = os.path.join(game_folder, "Images")
background_image = pygame.image.load("bg.jpg").convert()

while not done:
  for event in pygame.event.get():
    if event.type==pygame.QUIT:
      done = True
  screen.blit(background_image, [0, 0])

  pygame.display.flip()

  clock.tick(60)

pygame.quit()

Обновленный код все еще не работает

IЯ видел, что другие люди использовали тот же метод, но я не знаю, изменил ли я что-то и не вижу его или он просто больше не работает, потому что большинство из тех, что я нашел, кажется очень старым, когда онибыли опубликованы и решены, но я не думаю, что они были настолько стары, что решение изменилось

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Пожалуйста, используйте r-string для взломов.

Вы не будете довольны результатами "chris\new project\test\bg.jpg", так как перевод строки и TAB преподнесут неприятный сюрприз.

r"C:Users\chris\Desktop\Passion Project Files\Resources\bg.jpg"

Кроме того, если os.getcwd() не сообщает, что вы находитесь в корневом каталоге, вы должны начинать с начальной косой черты:

r"C:\Users\chris\Desktop\Passion Project Files\Resources\bg.jpg"
0 голосов
/ 01 мая 2019

Не совсем уверен, почему это не работает, но попробуйте это.

Поместите изображение в папку внутри папки вашего проекта.

Попросите библиотеку os сделать работу за вас. Это обеспечит доступ к пути к файлу для большинства компьютеров.

game_folder = os.path.dirname(__file__)
image_folder = os.path.join(game_folder, "theNameOfYourImageFolder")

Тогда вы должны определить и создать экземпляр того, что вы используете на себе. Например, если это для спрайта, например ...

class Whatever(pygame.sprite.Sprite)
    def __init__(self):
        self.image = pygame.image.load(os.path.join(image_folder,"justTheFileName.jpg"))
.convert()

Выше должно произойти перед pygame.init (). Чем после init где-то.

Whatever = Whatever()

Надеюсь, это поможет

...