2015-02-15 2 views
-1

Я использую Python 3.4.2 на Pycharm. изображение, которое я хочу отобразить, находится в той же папке, что и файл кода. Кажется, все работает нормально, пока я не попытаюсь импортировать изображение. Вот мой код:Python: pygame - not importing image

import pygame 
import sys 
from pygame.locals import * 
pygame.init() 


white = (255,255,255) 
black = (0,0,0) 
red = (255,0,0) 
green = (0,255,0) 
blue = (0,0,255) 
yellow = (255,255,0) 
cyan = (0,255,255) 
purple = (255,0,255) 

setDisplay = pygame.display.set_mode((400,300)) 
pygame.display.set_caption("this is a game") 
singlePixel = pygame.PixelArray(setDisplay) 
setDisplay.fill(green) 
image = pygame.image.load("Jeffery.png") 
while True: 
    pygame.display.update() 
    for event in pygame.event.get(): 
     setDisplay.blit(image,0,0) 

     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

Всякий раз, когда я пытаюсь запустить программу, я получаю следующее сообщение об ошибке:

"TypeError: invalid destination position for blit" 

Пожалуйста, помогите! Я исследовал это более часа, и я до сих пор не могу найти решение! Вся помощь очень ценится!

+0

Это свойство требует кортежа в качестве параметра, вот и ошибка –

ответ

0

Причина в том, что ваш blit-оператор находится в цикле for. Для Pyhton 2.x или 3.x ошибка одинакова. Под «недействительной позицией назначения для blit» это означает, что вы не можете поставить эту инструкцию в этом месте. Большинство людей, которых я вижу, используя либо версии Python, поставит blit-оператор сразу после цикл for, но не в нем. Убедитесь, что он все еще находится в вашем цикле while, и ошибка должна исчезнуть. Кроме того, вместо:

(image, 0, 0) 

Do:

(image, (0, 0)) 

предотвратить другую ошибку на недопустимых вещах в(). Я надеюсь, это поможет вам!

+0

Я ценю помощь. Я исправил эти ошибки, но теперь я получаю сообщение об ошибке: «pygame.error: Поверхности не должны блокироваться во время blit», есть ли способ исправить это? заранее спасибо! –

+0

никогда не будет. Я получил его на работу, мне просто пришлось удалить строку pixelArray. Большое спасибо за помощь! –

+0

Линия pixelArray может заблокировать поверхность. Вам нужно, чтобы Поверхность была разблокирована, чтобы иметь возможность на нее наброситься –