TypeError:参数 1 必须是 pygame.Surface,而不是 str 我该如何修复?

Dim*_*uid 4 python linux pygame raspberry-pi

我从 youtbe 视频中编码了这个,他似乎做得很好,但当我尝试时,我在底部收到错误消息,我很困惑,我需要帮助。

#!/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()
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,我收到错误:

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 
Run Code Online (Sandbox Code Playgroud)

我不确定这意味着什么或如何解决

这就是修复方法

你有两个问题。首先是在周围加上引号 back.png,使其成为字符串(str)而不是表面 (pygame.Surface)。第二个是为第二个参数放置一个元组而不是一个矩形(pygame.Rect).要修复第一个,只需将背景文件(您之前将表面保存为)而不是 "background.png". 要解决第二个问题,请使用backgroudfile.get_rect()获取背景的矩形。你的线路应该是:

screen.blit(backgroundfile, backgroundfile.get_rect()这本身不起作用,因为您之前没有将背景文件保存为表面对象。代替

backgroundfile = "back.png"

backgroundfile = pygame.image.load("back.png")"back.png"如果将其保存为同一文件夹中的文件,这将返回一个表面。对其他加载的图像执行相同的操作。完成所有这些操作,您的程序就应该可以运行了。

Pyg*_*erd 7

你有两个问题。首先是在 周围加上引号back.png,使其成为字符串 (str) 而不是表面 (pygame.Surface)。第二个是你为第二个参数放置一个元组而不是一个矩形(pygame.Rect)。要解决第一个问题,只需输入backgroundfile(您之前将曲面保存为的内容)而不是"background.png". 要解决第二个问题,请使用backgroudfile.get_rect()获取背景的矩形。你的线路应该是:

screen.blit(backgroundfile, backgroundfile.get_rect()
Run Code Online (Sandbox Code Playgroud)

这本身不起作用,因为您之前没有将背景文件保存为表面对象。代替

backgroundfile = "back.png"
Run Code Online (Sandbox Code Playgroud)

backgroundfile = pygame.image.load("back.png")
Run Code Online (Sandbox Code Playgroud)

如果“back.png”作为文件保存在同一文件夹中,这将返回一个表面。对其他加载的图像执行相同的操作。完成所有这些操作,您的程序就应该可以运行了。