PyDev无法识别PyQt5

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyDev无法识别PyQt5相关的知识,希望对你有一定的参考价值。

我正在关注pyqt的教程,并得到了这段代码:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Example(QWidget):

    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        cb = QCheckBox('Show title', self)
        cb.move(20, 20)
        cb.toggle()
        cb.stateChanged.connect(self.changeTitle)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Checkbox')
        self.show()

    def changeTitle(self, state):
        if state == Qt.Checked:
            self.setWindowTitle('Checkbox')
        else: self.setWindowTitle('Unchecked!')

def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

我在Eclipse上使用PyDev。只需说代码运行正常即可,但令人尴尬的是,PyDev用红线强调任何Qt / Q,当它悬停在Undefined variable: <..>上时。如果它是未定义的那么我的代码如何运行而没有错误?显然,这应该是PyDev的一个问题。我删除了python解释器(它指向python2.7而不是3.4)并将其作为正确的版本读取;但那没用。有趣的是,它识别PyQt4并坚持使用它的小部件而不是PyQt5。

大家都知道,上面的代码示例来自另一台也有PyQt5的笔记本电脑。这两个项目都来自PyDev,两者都有Ubuntu 15.04。我在当前机器上导入项目可能会搞砸PyDev解析所需的库。有没有人有解决为什么PyDev不能识别PyQt5?

答案

我有同样的问题。这些步骤对我有用。

  1. 设置环境变量:export QT_API = pyqt5(或任何适当的)
  2. 重新启动eclipse以便获取新的环境设置,然后将PyQt5添加到解释器的强制内置列表中(Window-> preferences-> pydev-> interpreters-> python interpreters)或者在这里查看http://www.pydev.org/manual_101_interpreter.html以获取更多详细信息。

以下SO问题让我知道变量的存在:Setting up IPython Qtconsole with PyQt5。在我设置它之前,我能够通过向内置函数添加'PyQt5'来完成一些完成工作,但它不会,例如,提供完整的完成列表,如from PyQt5.QtGui import,即使ipython独立。此外,pydev中的python控制台有同样的问题,从module_completion("from PyQt5.QtGui import Q")调用Ipython.core.completerlib产生了相同的不完整列表。最后,我猜测由于pydev正在为gui事件循环加载PyQt4(也可以在解释器设置中配置),当它试图内省Qt5模块时会发生命名空间冲突,导致它在构建之前纾困完整的完成清单。设置环境变量会导致pydev加载pyqt5而不是默认的pyqt4。我没有检查过,但似乎这样设置pydev将在完成pyqt4引用时遇到问题。

另一答案

对于那些试图弄清楚如何在Linux上集成eclipse,pydev和pyqt5的寂寞网络流浪者,我从头到尾为你带来了我的方法。

Eclipse, PyQt5, and PyDev on Linux

  1. 安装python v3.6
  2. 从eclipse.org安装eclipse
  3. 在eclipse中,单击“帮助” - >“安装新软件”
  4. 点击添加...
  5. 将软件源“http://www.PyDev.org/updates”添加到可用的软件源中
  6. 称之为PyDev
  7. 单击PyDev复选框
  8. 单击下一步安装它
  9. Download PyQt5
  10. Download SIP
  11. 首先安装SIP
  12. 安装PyQt5
  13. 重新配置eclipse以使用PyQt5
  14. 单击窗口→首选项→PyDev→解释器→Python解释器
  15. 单击Advanced Auto-Config
  16. 将解释器重命名为“python3.6”
  17. 单击Libraries选项卡
  18. 单击“新建文件夹”
  19. 添加“/ usr / lib / x86_64-linux-gnu / qt5 / plugins”
  20. 添加“/ usr / lib / x86_64-linux-gnu / qt5 / libexec”
  21. 添加“/ usr / lib / x86_64-linux-gnu / qt5 / bin”
  22. 单击“应用”
  23. 单击“应用并关闭”
  24. 重启eclipse
  25. 利润!

这将允许您在开发pyqt5应用程序时在eclipse中完成选项卡代码。

以上是关于PyDev无法识别PyQt5的主要内容,如果未能解决你的问题,请参考以下文章

pydev 无法识别带有 django 的 python 安装

eclipse pydev中没有回溯

PyQt5类,方法和属性未在Eclipse中显示在AutoComplete中,标准类名称显示错误但程序运行

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

pycharm 无法识别PyQt5

使用片段时 Intellij 无法正确识别 Thymeleaf 模型变量