Pygame: не удалось открыть файл. Тот же каталог

Я загрузил 150 изображений .tif в модуль glob и в настоящее время не могу их загрузить. Я очень новичок в программировании, поэтому я думаю, что это глупая ошибка, которую мне не хватает, но я не могу понять это.

Это код:

import pygame, glob

types= ('*.tif')

artfile_names= []

for files in types:
    artfile_names.extend(glob.glob(files))

print(artfile_names)

for artworks in artfile_names:
    pygame.image.load(str(artfile_names))

Спасибо за любую помощь!



person Delly    schedule 12.11.2017    source источник


Ответы (1)


Ошибка заключается в том, что ваша переменная types является просто строкой (заключение ее в круглые скобки не имеет никакого эффекта), поэтому вы перебираете буквы в строке и вызываете artfile_names.extend(glob.glob(files)) для каждой буквы.

Запятая образует кортеж (кроме пустого кортежа):

types = '*.tif',  # This gives you a tuple with the length 1.

types = '*.tif', '*.png'  # This is a tuple with two elements.

Во второй части вашего кода вам нужно выполнить итерацию по artfile_names, вызвать pygame.image.load(artwork) для загрузки изображения с жесткого диска и добавить полученный результат поверхность к списку:

images = []

for artwork in artfile_names:
    images.append(pygame.image.load(artwork).convert())

Вызовите метод .convert() (или .convert_alpha() для изображений с прозрачностью), чтобы улучшить производительность блитинга.

person skrx    schedule 12.11.2017
comment
Кстати, этот код загружает только изображения, но ничего не отображает. Вы читаете или смотрите учебник по pygame? Вам нужен цикл while, в котором вы используете метод .blit вашей поверхности отображения pygame для переноса изображений. - person skrx; 12.11.2017
comment
Ах я вижу. Благодарю за разъяснение :) - person Delly; 12.11.2017
comment
Без проблем. Program Arcade Games – это хорошая книга о Python и pygame, если вам нужно учебник. - person skrx; 12.11.2017