【问题标题】:TypeError: argument 1 must be pygame.Surface, not builtin_function_or_methodTypeError:参数 1 必须是 pygame.Surface,而不是 builtin_function_or_method
【发布时间】:2018-06-06 21:58:21
【问题描述】:

完整代码在这里: https://pastebin.com/Ne3dCpzp

Dice0 = pygame.image.load("dice_0.png").convert
Dice1 = pygame.image.load("dice_1.png").convert
Dice2 = pygame.image.load("dice_2.png").convert
Dice3 = pygame.image.load("dice_3.png").convert
Dice4 = pygame.image.load("dice_4.png").convert

dice0img = Dice0
dice1img = Dice1
dice2img = Dice2
dice3img = Dice3
dice4img = Dice4

...

    if dice == 0 :
        screen.blit(dice0img, (80, 320))
    if dice == 1 :
        screen.blit(dice1img, (80, 320))
    if dice == 2 :
        screen.blit(dice2img, (80, 320))
    if dice == 3 :
        screen.blit(dice3img, (80, 320))
    if dice == 4 :
        screen.blit(dice4img, (80, 320))

我目前遇到错误:

Traceback (most recent call last):
  File "C:\Users\Ed\Documents\thonk\game.py", line 90, in <module>
    screen.blit(dice4img, (80, 320))
TypeError: argument 1 must be pygame.Surface, not builtin_function_or_method

为什么会这样?

【问题讨论】:

  • 我认为您的意思是致电 convert。不将其分配给 Dice4
  • 请将您的代码作为文本发布在您的问题中,而不是依赖外部链接。
  • 不行,编辑告诉我代码太多

标签: python pygame


【解决方案1】:

正如错误消息告诉您的,您必须将 Surface 传递给 blit 函数。

如果您查看这些代码行:

Dice4 = pygame.image.load("dice_4.png").convert
...
dice4img = Dice4

您可以看到Dice4 / dice4img 是对convert 函数的引用。同样,这也是错误消息告诉您的内容(not builtin_function_or_method)。

您必须实际调用convert 函数,使其返回Surface 并将其分配给Dice4 变量。

TL;DR:

看起来像的线条

Dice4 = pygame.image.load("dice_4.png").convert

应该是这样的

Dice4 = pygame.image.load("dice_4.png").convert()

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多