python - 错误:“pygame.Surface”对象不可调用
问题描述
再会 !我正在为学年结束创建一个程序。但是“'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()”的函数中完成的。
非常感谢您的回答 !
解决方案
您必须为函数或Surfacefenetre
的本地实例使用不同的名称。Surface (fenetre= pygame.display.set_mode(...)) “遮蔽”了函数,因为它们具有相同的名称。
更改显示表面变量的名称及其每次使用:fenetre
fenetre= pygame.display.set_mode((800, 464), FULLSCREEN)
fenetre_surf = pygame.display.set_mode((800, 464), FULLSCREEN)
推荐阅读
- r - SAS proc 表示 R 中的等价物
- java - 通过保留现有规则向单例 KieContainer 添加新规则
- jquery - jQuery在滚动之前获取滚动位置以在全屏时使用scrollTop()位置临时禁用滚动
- django - 在 Django 中,如何重命名用户模型?
- r - 计算每行超过 60 的值的数量
- firebase - FIRESTORE :具有多个 where 子句的查询流
- json - Flutter/Dart Json 序列化
- javascript - 谷歌脚本/html试图在页面内显示页面
- reactjs - 在地图上查看城市名称
- node.js - 带有blob发送的Nodejs Expressjs中的CORS失败