【发布时间】:2021-01-02 19:35:51
【问题描述】:
美好的一天! 我正在为学年结束创建一个程序。但是“'pygame.Surface'对象不可调用”的著名问题来了。我现在不知道错误在哪里。 程序:
def Setfenetre():
#New window
fenetre= pygame.display.set_mode((800, 464), FULLSCREEN)
background=pygame.image.load("Ressources/Images/Set_window4.jpg").convert()
fenetre.blit(background, (0,0))
pygame.display.flip()
#BoutonSOUND(ON/OFF)
SOUND_area = pygame.Rect((280,55), (250,50))
rect_surf = pygame.Surface(SOUND_area.size)
rect_surf.set_alpha(0)
#BoutonRETURN
RETURN_area = pygame.Rect((315,165), (171,45))
rect_surf = pygame.Surface(RETURN_area.size)
rect_surf.set_alpha(0)
#Son clic:
soundClic= pygame.mixer.Sound("Ressources/Sons/Clic.wav")
#SonON/OFF / Sorti de Setfenetre
jeu=1
while jeu:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
if SOUND_area.collidepoint(event.pos) or RETURN_area.collidepoint(event.pos):
if event.button== 1:
soundClic.play()
if SOUND_area.collidepoint(event.pos):
if event.button== 1:
soundMainMenu.stop()
if RETURN_area.collidepoint(event.pos):
if event.button== 1:
jeu=0
fenetre("MainMenu")
fenetre.blit(rect_surf, RETURN_area)
pygame.display.flip()
pygame.quit()
Python 告诉我这个错误:(TypeError: 'pygame.Surface' object is not callable) PS: 我的 pygame 窗口没有初始化。因为它是在另一个名为“fenetre()”的函数中完成的。
非常感谢您的回答!
【问题讨论】:
-
fenetre("MainMenu")应该做什么?fenetre是 pygame.Surface 的一个实例 - 名称fenetre是否使用了两次? -
基本上当这个错误出现时,这意味着你试图在一个对象上使用
(),就像说的那样,它是不可调用的,即它没有实现__call__方法。跨度> -
@Rabbid76 函数 fenetre("MainMenu") 是一个菜单,窗口上有一个按钮,函数 Setfenetre() 正在启动。这个窗口也是一样的:一个“返回”按钮可以启动功能 fenetre("MainMenu")。因此,当我播放程序时,我执行命令“fenetre("MainMenu")”来显示菜单。 “fenetre”这个名字被使用了两次来调用这个函数
-
@kaktus_car 是的,这就是为什么我不明白这个错误:-|
-
@Rabbid76 哦,好的,它的工作!非常感谢您的快速和帮助!!