2017-05-21 7 views
0
str

Ich habe eine Tonne von irrelevanten Code, so dass ich werde versuchen, nur die wichtigen Bits zu überspringen, nachdem die unwichtigen tidbits Kommentierung aus, mit denen ich links:Argument 1 muss pygame.Surface, nicht

import pygame 
from pygame.locals import * 
from characters import Character 

class Game(object): 
    def __init__(self): 
    self.__running = True 
    self.__display = None 
    self.size = self.width, self.height = 640, 480 

    def on_init(self): 
    pygame.init() 
    self.clock = pygame.time.Clock() 
    self.__display = pygame.display.set_mode(self.size, pygame.HWSURFACE | 
     pygame.DOUBLEBUF) 
    pygame.mouse.set_visible(False) 
    self.hero = Character() 
    self.hrgrp = pygame.sprite.Group(self.hero) 
    self.__running = True 

    def on_render(self): 
    self.hrgrp.draw(self.__display) 
    pygame.display.update() 

    def on_cleanup(self): 
    pygame.quit() 

    def on_execute(self): 
    if self.on_init() == False: 
     self.__running = False 

    while(self.__running): 
     self.on_render() 
    self.on_cleanup() 

if __name__ = "__main__": 
    game = Game() 
    game.on_execute() 

Wenn Sie sich fragen:

self.hero = Character() 

enthält nur

Class Character(pygame.sprite.Sprite): 
    def __init__(self): 
    pygame.image.load("path.png")  
    self.rect = self.sprite.get_rect() 

Der Fehler zurückgegeben:

File "/home/thegilberts/Documents/Python/game/game/game.py", line 70, in on_render 
self.hrgrp.draw(self.__display) 
File "/usr/local/lib/python3.5/dist-packages/pygame-1.9.4.dev0-py3.5-linux-x86_64.egg/pygame/sprite.py", line 475, in draw 
self.spritedict[spr] = surface_blit(spr.image, spr.rect) 
TypeError: argument 1 must be pygame.Surface, not str 

Ich habe keine Ahnung warum. Es ist definitiv eine Oberfläche, keine Schnur. In der Tat benutze ich selbst .__ Anzeige an vielen anderen Orten, um Menüs und Dinge zu erstellen, aber es lässt mich einfach nicht diese Sprite-Gruppe zeichnen.

+1

Sie haben hier ein bisschen zu viel ausgeschnitten. * Was * gibt diesen Fehler zurück? Bitte zeigen Sie den vollständigen Traceback an. –

+0

Ich habe es aktualisiert, sorry. Ich dachte, ich hätte den ganzen Fehler kopiert. Im Wesentlichen Modul> on_execute> on_render> self.hrgrp.draw (self .__ display) –

Antwort

0

Ich fand es heraus. Innerhalb der Character() - Klasse ist es sehr wichtig, dass self.image der pygame.image.load() ist Es stellte sich heraus, dass ich etwas Code aus der Character() -Klasse, die ich gepostet hatte, weil ich nicht dachte, dass es wichtig war . Wenn jemand diesen Fehler trifft, der falsche Code war:

Class Character(pygame.sprite.Sprite) 
    def __init__(self): 
    pygame.sprite.Sprite.__init__(self) 
    self.image = "image.png" 
    self.sprite = pygame.image.load(self.image) 
    self.rect = self.sprite.get_rect() 

das Problem zu beheben, tauschte ich die self.image mit self.sprite in allen Fällen und es funktionierte.

Verwandte Themen