wol*_*s90 2 python pylint python-3.x pyqt5 visual-studio-code
尝试学习PyQt5时遇到VS Code中的此问题,“ PyQt5.QtWidgets”模块中没有名称“ QApplication”,“ PyQt5.QtWidgets”模块中没有名称“ QWidget”。
我不确定这是否是pylint问题或其他问题。我已经确认PyQt5已随pip3列表一起安装,但我似乎无法弄清楚问题所在。
import sys
from PyQt5.QtWidgets import QApplication, QWidget
def app():
my_app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("Test")
w.show()
sys.exit(my_app.exec_())
app()
Run Code Online (Sandbox Code Playgroud)
我希望这个错误不会一直显示,但是会阻止我在VS Code中运行。任何帮助或建议表示赞赏。
use*_*087 16
我认为删除包导入错误的最简单方法是通过 Ctrl+Shift+P 进入 vscode 的 JSON 设置,搜索“设置”并选择Preferences: Open Settings (JSON)并将此行添加到字典中:
"python.linting.pylintArgs": ["--extension-pkg-whitelist=PyQt5"]
Run Code Online (Sandbox Code Playgroud)
如果要添加多个包,只需添加第一个,用逗号分隔,如下所示:
"python.linting.pylintArgs": ["--extension-pkg-whitelist=PyQt5,otherPkg"]
Run Code Online (Sandbox Code Playgroud)
我已经解决了这个问题,显然,Pylint doesn't load any C extensions by default, because those can run arbitrary code.因此我发现,如果在项目目录中创建一个名为.pylintrcrc文件的系统文件,则可以通过在rc文件中添加以下代码,将该程序包列入白名单,以防止引发错误extension-pkg-whitelist=PyQt5。因此,本质上问题不在于PyQt5,而是由此而来的短绒投掷了错误的错误。
小智 7
我找到了一个简单的解决方案,只需以这种方式使用 QApplication :
my_app = QtWidgets.QApplication(sys.argv)
Run Code Online (Sandbox Code Playgroud)
并且不导入QApplication从PyQt5。
在 PyQt5 中测试!
我可以在 Windows 10(Python 3.7.3、PyQt 5.11.3、PyLint 2.3.1)上的 Visual Studio Code 中重现 PyLint 错误。虽然它不会阻止我运行代码,正如问题所暗示的那样。
这肯定是 linter 的问题,而不是 PyQt5 安装或其他任何东西,因为 PyLint 在将代码更改为以下等效代码时停止抱怨:
from PyQt5 import QtWidgets
app = QtWidgets.QApplication([])
window = QtWidgets.QWidget()
window.setWindowTitle("Test")
window.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
显着的区别是此代码将QtWidgets模块作为一个整体导入,而不是其中定义的单个类对象。
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |