当前位置: 首页 > 知识库问答 >
问题:

pyplay.表面变成NoneType

殷宇
2023-03-14

我有一个名为engine.py的python文件。我有一个特定的功能,我将把一部分,由于知道功能工作正常:

def set_image(self,path : str,spritesheet=None) -> pygame.Surface:
        if (path is not None) and (spritesheet is None): # if path is provided but spritesheet is not
            try:
                self.image = pygame.image.load(path)
                print(type(self.image))
                self.rect = self.image.get_rect()
            except FileNotFoundError as e:
                raise e

但是当我尝试blit()函数的图像结果时,我得到一个TypeError声明pygame.Surface必须是第一个参数,而不是None。我做了一些测试,发现engine.py中的函数工作得很好,并且它正确地设置了self.image。但是程序没有将其self.image映射到pygame.Surface对象。

这里是声明播放器对象和设置player.image的地方:

player = Engine.Player()

player.image = player.set_image('screensaver/blue_car.png',)

在这里,我尝试blit()将其显示在我的显示屏上(错误弹出的那行):

display.blit(player.image, (0,0))

共有1个答案

孔俊捷
2023-03-14

set_image是一种方法。该方法不返回图像,但它设置对象Imagerect属性。因此:

player.image=player.set_image('屏幕保护程序/blue_car.png',)

player.set_image('screensaver/blue_car.png')
 类似资料:
  • 我目前正在开发一个pyplay,试图使我的角色动画,这样当玩家移动他时,程序将在四个精灵图像次表面中循环。我已经为此设置了一个类: 当我使用虚拟精灵表(只是一个简单的50 x 50的改变颜色的正方形精灵)时,它工作得非常好,但是当我尝试实现我的(部分完成的)实际角色表时,我回来了 我不确定是工作表的大小(虚拟工作表是832 x 52px,字符工作表是1008 x 79px),还是什么,我似乎找不到

  • 我想先说一下,我确实查过这个问题,但每个似乎有类似问题的人都找到了一个不适合我的解决方案。我正在使用Python3.4.3 64位和pygame 1.9.2a,并在标题中说明了错误。目前我的代码如下所示: 运行它给了我以下信息: 提前谢谢,如果这听起来像个愚蠢的问题,我很抱歉。 编辑:多亏了布莱恩,这个问题现在已经解决了。对于任何有类似问题的人来说,以后可能会看到这个,更正后的版本是这样的: 关键

  • 我正在尝试构建一个应用程序,它需要用户绘制一些东西。 为此,我创建了一个画布(一个pyplay。表面对象),画在上面注册,然后我把它粘在窗户上。我希望画布是无限的,这样当用户滚动时,他就可以继续绘图(当然,画布的一小部分被点击到窗口上)。但是,实际上,pyplay中的Surface需要有限的宽度和高度,最重要的是,它没那么大!(我想那是因为它实际上锁定了内存中的空间)。 所以,我尝试创建块:每个块

  • 我下面的教程,创建表单与高级自定义字段,更新用户配置文件。当我按下提交按钮时,页面变成空白(白色)。也许你们可以在下面看到一行引起麻烦的代码。教程说它告诉WordPress它在更新用户而不是页面。 我希望页面重新加载,或者在提交后重定向到另一个页面。 教程参考:https://usersinsights.com/acf-user-profile/ 这段代码在functions.php.它转换短代码

  • 我在youtube上的视频中找到了一个教程,那个家伙正在运行以下代码: 如果event.type==pyplay。退出: 当我写“pygame.quit:”而不是“pygame.quit:”(在for循环中)时,窗口不会关闭。我完全是个初学者。这是我们必须大写的命令吗?有人能解释一下原因吗?

  • 我正在用pygame制作一个游戏,在制作这个游戏时,我在屏幕上使用了很多文本。但是当我在我的代码中达到这一点时,第一个写的文本不会闪烁,但是第二个会闪烁,我想改变这一点。而且,当我拿着钥匙时,当我只想让它写一次信时,这封信就会被一遍又一遍地快速地写下来。代码: 编辑:现在唯一的问题是闪烁的文字,因为我得到了一个解决方案