Python 错误:描述符';blit&x27;需要一个';pygame.Surface';对象,但收到一个';非类型';

Python 错误:描述符';blit&x27;需要一个';pygame.Surface';对象,但收到一个';非类型';,python,pygame,Python,Pygame,我正在创造一个游戏。我编写此代码是为了创建一个精灵及其hitbox: hg = pygame.image.load('hgrd1copy.jpg').set_colorkey(red) hgbox = pygame.Rect(0 ,13 ,36 ,72) pygame.Surface.blit(hg, hgbox) 我原来把 windowSurface.blit(hg, hgbox) 但后来我得到了一个错误,告诉我我的参数必须是pygame.Surface而不是none 但是,当我将代码更改

我正在创造一个游戏。我编写此代码是为了创建一个精灵及其hitbox:

hg = pygame.image.load('hgrd1copy.jpg').set_colorkey(red)
hgbox = pygame.Rect(0 ,13 ,36 ,72)
pygame.Surface.blit(hg, hgbox)
我原来把

windowSurface.blit(hg, hgbox)
但后来我得到了一个错误,告诉我我的参数必须是
pygame.Surface
而不是none

但是,当我将代码更改为
pygame.Surface.blit
时,它给出了以下错误代码:
TypeError:描述符“blit”需要一个“pygame.Surface”对象,但收到了一个“NoneType”

我该怎么办?

如命令中所述-y9u必须将图像加载到一行代码中,然后在另一行调用读取图像时的
set\u colorkey
方法。对于它们,
blit
应该作为一个方法从现有的曲面调用,而不是从
surface
类调用。(现在的问题是代码,程序如何“知道”将图像blit到哪里

因此,假设您的屏幕位于您所描述的
windowSurface
变量上,这应该可以工作:

hg = pygame.image.load('hgrd1copy.jpg')
hg.set_colorkey(red)
hgbox = pygame.Rect(0, 13, 36, 72)
windowSurface.blit(hg, hgbox)

正如commemts中所解释的,y9u必须在一行代码中加载图像,并在另一行调用读取图像的
set\u colorkey
方法。并且,对于这些方法,
blit
应作为现有曲面的方法调用,而不是从
曲面
类调用。(现在的问题是代码,程序如何“知道”将图像blit到哪里

因此,假设您的屏幕位于您所描述的
windowSurface
变量上,这应该可以工作:

hg = pygame.image.load('hgrd1copy.jpg')
hg.set_colorkey(red)
hgbox = pygame.Rect(0, 13, 36, 72)
windowSurface.blit(hg, hgbox)

…修复代码,使
hg
不是
None
hg
None
,因为
set\u colorkey(红色)
不会返回
pygame.Surface
对象。您可以验证from(
->None
表示返回类型是
None
)。要修复此问题,只需在一行上执行“图像加载”(以便
hg
获取返回的曲面)和它自己行上的“颜色键设置”(例如
hg.set\u colorkey(红色)
)!…修复代码,使
hg
不是
None
hg
None
,因为
set\u colorkey(红色)
没有返回
pygame.Surface
对象。您可以验证from(
->None
表示返回类型为
None
)。要解决此问题,只需在一行上执行“图像加载”(以便
hg
获取返回的曲面)并在其自身行上执行“颜色键设置”(例如
hg.set\u colorkey(红色)
)!我将
set_colorkey
移到了另一行,这解决了我以前的问题,但现在当我运行程序时,红色实际上没有被去掉。我已检查图片文件上的红色和程序的定义是否都是(255,0,0)。你知道为什么会这样吗?我将
set_colorkey
移到了另一行,这解决了我以前的问题,但现在当我运行程序时,红色实际上没有被去掉。我已经检查了图片文件上的红色和程序的定义都是(255,0,0)。你知道为什么会这样吗?