PyDev 无法识别 PyQt5

PyDev doesn't recognise 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 并坚持使用 PyQt4 而不是 PyQt5 的小部件。

请大家注意,上面的代码示例来自另一台也有 PyQt5 的笔记本电脑。这两个项目都来自 PyDev,并且都有 Ubuntu 15.04。有可能是我在当前机器上导入的项目搞砸了 PyDev 解析所需库的过程。有谁能解决为什么 PyDev 无法识别 PyQt5?

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

  1. 设置环境变量:export QT_API=pyqt5(或任何合适的)
  2. 重新启动 eclipse 以便选择新的环境设置,然后将 PyQt5 添加到解释器的强制内置列表中(Window->preferences->pydev->interpreters->python 口译员)或查看此处 http://www.pydev.org/manual_101_interpreter.html 了解更多详情。

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

对于所有那些试图弄清楚如何在 Linux 上集成 eclipse、pydev 和 pyqt5 的孤独的互联网流浪者,我从头到尾为您介绍我的方法。

Linux

上的 Eclipse、PyQt5 和 PyDev
  1. 安装python v3.6
  2. 从 eclipse.org
  3. 安装 eclipse
  4. 在eclipse中,点击Help->Install New Software
  5. 单击添加...
  6. 在可用软件源中添加软件源“http://www.PyDev.org/updates
  7. 称之为 PyDev
  8. 点击 PyDev 复选框
  9. 点击下一步进行安装
  10. Download PyQt5
  11. Download SIP
  12. 先安装 SIP
  13. 安装 PyQt5
  14. 重新配置 eclipse 以使用 PyQt5
  15. 点击Window→Preferences→PyDev→Interpreters→Python Interpreters
  16. 点击高级自动配置
  17. 将解释器重命名为“python3.6”
  18. 单击库选项卡
  19. 点击新建文件夹
  20. 加入“/usr/lib/x86_64-linux-gnu/qt5/plugins”
  21. 加入“/usr/lib/x86_64-linux-gnu/qt5/libexec”
  22. 加入“/usr/lib/x86_64-linux-gnu/qt5/bin”
  23. 点击应用
  24. 单击应用并关闭
  25. 重启 eclipse
  26. 盈利!

这将允许您在开发 pyqt5 应用程序时在 eclipse 中获取选项卡代码补全。