【问题标题】:How to fix "pygame module has no member K_RIGHT"?如何修复“pygame 模块没有成员 K_RIGHT”?
【发布时间】:2019-07-19 17:06:20
【问题描述】:

我决定做一个简单的蛇游戏,但我已经遇到了一个简单的问题。我沿着if keys[pygame.K_RIGHT]if keys[pygame.K_LEFT] 等的路线给我一个“pygame has no member "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

精灵没有移动,并且出现“无成员”错误。出了什么问题?

【问题讨论】:

  • 谁给你的错误?运行代码时,VS Code、语言服务器或 Python 本身中的 Pylint?
  • @BrettCannon Pylint 在 VScode 中。
  • 运行代码时是否出错?如果没有,那就不要打扰它。它可以是 IDE 的警告,不一定意味着代码中的错误。也许它可能找不到显示更多变量信息的文档。问题是当您运行代码时收到错误消息。
  • 可能因为您的代码不正确而无法移动 - 即。您可能有错误的缩进并且此代码永远不会执行,或者您更改了值x,y 但您没有在新位置重绘图像。等等,还有很多很多其他的错误。如果没有其他代码,我们将无法为您提供帮助。
  • 好吧,原来只是 VScode 错误地显示错误。我的游戏运行正常,感谢您的宝贵时间!

标签: python visual-studio-code pygame


【解决方案1】:

这不一定是错误,而更多是 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"
]

【讨论】:

    猜你喜欢
    • 2020-03-08
    • 2020-04-25
    • 1970-01-01
    • 2015-08-14
    • 2021-07-11
    • 2020-11-03
    • 2018-11-07
    相关资源
    最近更新 更多