TypeError: argument 1 muss pygame.Oberfläche, nicht str, Wie kann ich das beheben?

Codiert ich dies von einem youtbe video und er schien es in Ordnung, aber wenn ich versuchte, ich bekam die Fehlermeldung unten ich bin so verwirrt und ich brauche Hilfe bitte.

#!/usr/bin/env python

import pygame, sys

from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode((370, 572), 0, 32)

backgroundfile = "back.png"
mousefile = "mouse.png"

back = pygame.image.load(backgroundfile).convert()
mouse = pygame.image.load(mousefile).convert_alpha()

while True:

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

    #Now we have initialized everything lets start with the main part

    screen.blit("back.png", (0,0))

    pygame.display.flip()

Wenn ich das Programm starte bekomme ich die Fehlermeldung:

Traceback (most recent call last):
  File "Tutorial 5 First game.py", line 26, in <module>
  screen.blit("back.png", (0,0))
TypeError: argument 1 must be pygame.Surface, not str 

Ich bin mir nicht sicher, was das bedeutet oder wie zu beheben

DIES WAR DER FIX

Haben Sie zwei Probleme. Ihre erste ist, dass Sie setzen Sie Anführungszeichen um
back.png, so dass es in einen string (str) statt der Oberfläche
(pygame.Surface). Ihre zweite ist, dass Sie ein Tupel für die zweite
argument statt einer rect - (pygame.Rect). fix Auf den ersten, setzen Sie sich einfach
backgroundfile (was Sie zuvor gespeichert haben, die Oberfläche so) statt
"background.png". Fixieren Sie die zweite, verwenden Sie backgroudfile.get_rect() zu
Holen Sie sich die hintergrund-rect. Deine Zeile sollte sein:

screen.blit(backgroundfile, backgroundfile.get_rect() Dies von selbst
wird nicht funktionieren, weil Sie nicht zuvor speichern backgroundfile als
surface-Objekt. Statt

backgroundfile = "back.png" setzen

backgroundfile = pygame.image.load("back.png") Diese zurück
Oberfläche, wenn "back.png" gespeichert wie eine Datei im gleichen Ordner. Tun
gleiche Sache mit dem anderen geladenen Bild. All diese Dinge tun und Ihre
das Programm sollte funktionieren.

  • Tipp: warum man sich die Mühe der Erstellung von Variablen zu speichern, die mit dem Namen, dann das erstellen von Bildern aus ihm heraus, wenn Sie don ' T verwenden diese Bilder? (Auch bitte Bearbeiten Sie Ihre post so, dass die Einrückung richtig ist. Dies ist von entscheidender Bedeutung für Python.)
  • dies kann nur ein Ausschnitt des Programms, so wie er vielleicht über diese Bilder später (das ist meine Vermutung :P).
  • meine Vermutung ist, dass screen.blit nimmt ein Bild als argument...
  • Aus der Basis von dem, was Mat gesagt, ich glaube nicht, dass Sie sollten screen.blit("back.png", (0,0)), sondern screen.blit(back, (0,0)), da Sie bereits initialisiert die variable back als ein Bild, das Sie vorher geöffnet hatten.
  • Danke Jungs mir das Leben gerettet, nun habe ich die bildaufrufe up 🙂
InformationsquelleAutor Neoxidine | 2012-12-29
Schreibe einen Kommentar