【问题标题】:TypeError: 'pygame.Surface' object is not callable (Problem with the arrays, in Pygame)TypeError: 'pygame.Surface' 对象不可调用(数组有问题,在 Pygame 中)
【发布时间】:2020-11-23 08:51:46
【问题描述】:
def outputting():
       screen.blit(backgroundE, [0, 0])
       z = random.randint(0, 3000)
       text1 = words[z]
       screen.blit(font400.render(text1, False, (255, 255, 255)), (100, 500))
       pygame.display.update()
       pygame.time.wait(10000)
...
outputting()

我在 Stackoverflow 上找不到与我的问题相关的解决方案。我意识到问题出在我的阵列上。 (该数组包含一堆单词)。我无法发布我的整个代码,因为它现在将近 1000 行。一切正常,除非我将数组引入代码中,但我不断收到错误:

    text1 = words(z)
TypeError: 'pygame.Surface' object is not callable

我几乎尝试了所有方法并且卡住了。我需要有一个数组或类似的东西,我可以在其中存储一组(3000)个单词,并且可以随机输出其中一个。

任何类型的帮助都会很棒,

【问题讨论】:

    标签: python arrays pygame callable


    【解决方案1】:

    text1 = 单词(z)
    TypeError: 'pygame.Surface' 对象不可调用

    words好像是一个Surface对象,实际上是不可调用的;你不能在那个对象上使用()。这就是错误消息告诉您的内容。

    但是你也有这个代码:

     z = random.randint(0, 3000)
     text1 = words[z]
    

    这里words 似乎应该是一个字符串列表。

    首先,确保您没有用另一个对象(在您的情况下为 Surface)覆盖您的 words 列表。

    其次,要从列表中获取随机元素,只需使用random.choice

    此外,您不应只致电pygame.time.wait(10000),因为在此期间,您的窗口不会更新,也不会响应。您应该创建一个事件循环并在该循环中处理QUIT 事件。

    【讨论】:

    • 非常感谢。我第二次在这个网站上发帖,问题是一个简单的拼写/措辞错误。在这种情况下,我已经有了另一个用于“单词”的变量,但是由于代码变得如此之大,因此很难了解我过去使用了哪些变量。无论如何,它现在正在工作,所以谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2018-05-18
    • 2013-04-03
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多