我正在关注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?
答案 0 :(得分:4)
我遇到了同样的问题。这些步骤对我有用。
以下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的寂寞网络流浪者,我从头到尾为你带来了我的方法。
这将允许您在开发pyqt5应用程序时在eclipse中完成选项卡代码。