PyDev不会识别PyQt5

时间:2015-06-28 16:11:52

标签: python eclipse qt pyqt pydev

我正在关注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?

2 个答案:

答案 0 :(得分:4)

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

  1. 设置环境变量:export QT_API = pyqt5(或任何适当的)
  2. 重新启动eclipse以便获取新的环境设置,然后将PyQt5添加到解释器的强制内置列表中(Window-&gt; preferences-&gt; pydev-&gt; interpreters-&gt; python interpreters)或者查看此处http://www.pydev.org/manual_101_interpreter.html了解更多详情。
  3. 以下SO问题让我知道变量的存在:Setting up IPython Qtconsole with PyQt5。在我设置之前,我可以通过添加&#39; PyQt5&#39;来完成工作。例如,对于内置函数,它不会像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引用时会遇到问题。

答案 1 :(得分:1)

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

Linux上的Eclipse,PyQt5和PyDev

  1. 安装python v3.6
  2. 从eclipse.org安装eclipse
  3. 在eclipse中,单击“帮助” - >“安装新软件”
  4. 点击添加...
  5. 将软件源“http://www.PyDev.org/updates”添加到可用的软件源
  6. 称之为PyDev
  7. 点击PyDev复选框
  8. 单击“下一步”
  9. 进行安装
  10. Download PyQt5
  11. Download SIP
  12. 首先安装SIP
  13. 安装PyQt5
  14. 重新配置eclipse以使用PyQt5
  15. 单击Window→首选项→PyDev→Interpreters→Python Interpreters
  16. 点击Advanced Auto-Config
  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. 利润!
  27. 这将允许您在开发pyqt5应用程序时在eclipse中完成选项卡代码。