好,所以我决定制作一个简单的蛇游戏,而我已经遇到了一个简单的问题。我沿if keys[pygame.K_RIGHT]
,if keys[pygame.K_LEFT]
等行的行给我一个“ pygame没有成员“ K_RIGHT / K_LEFT”错误。
我尝试了py -m pip uninstall pygame
,然后重新安装了它,但是错误仍然存在。即使在运行程序时,也无法按向左/向右/向上/向下键,并且在执行import pygame
然后执行pygame.init()
时也会遇到相同的错误。
if keys[pygame.K_RIGHT]:
self.player.moveright
if keys[pygame.K_LEFT]:
self.player.moveleft
if keys[pygame.K_UP]:
self.player.moveup
if keys[pygame.K_DOWN]:
self.player.movedown
if keys[pygame.K_ESCAPE]:
self._running=False
子画面不会移动,并且出现“无成员”错误。怎么了?
答案 0 :(得分:2)
这不一定是错误,而更多是pylint的限制。目前,pylint具有无法识别C代码的局限性,如以下答案中所述:pylint 1.4 reports E1101(no-member) on all C extensions:
只有来自受信任来源(标准库)的C扩展是 加载到正在检查的Python流程中以从实时构建AST 模块。
K_RIGHT
(以及所有其他常量)被导入为from pygame.constants import *
,但实际上它们是src_c/constants.c中定义的C代码,该代码以的形式存储在pygame的python安装中。 constants.cpython- [ver]-[arch] .so 。
很遗憾,没有办法解决该错误。如果您不希望VS Code + pylint将它们显示为错误,则可以通过将其添加到 settings.json :
中来隐藏它们"python.linting.pylintArgs": [
"--extension-pkg-whitelist=pygame"
]