PyDev无法识别PyQt5

2024-10-01 07:46:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学习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,都有ubuntu15.04。有可能是我在当前机器上导入的项目打乱了PyDev解析所需的库。有人能解释为什么PyDev不能识别PyQt5吗?在


Tags: 代码fromimportselfinitmainexampledef
2条回答

我也有同样的问题。这些步骤对我有效。在

  1. 设置环境变量:export QT_API=pyqt5(或其他适当的值)
  2. 重新启动eclipse以获取新的环境设置,然后将PyQt5添加到解释器的强制内置项列表中(窗口->首选项->pydev->解释器->python解释器),或查看此处http://www.pydev.org/manual_101_interpreter.html以获取更多详细信息。在

下面的问题提示了我变量的存在: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. 安装pythonv3.6
  2. 从安装eclipseeclipse.org在
  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. 单击高级自动配置
  16. 将解释器重命名为“python3.6”
  17. 单击“库”选项卡
  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中完成制表符代码。在

相关问题 更多 >