我正在关注 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 的问题吗?
我有同样的问题。这些步骤对我有用。
- 设置环境变量:export QT_API=pyqt5(或任何适当的变量)
- 重新启动 Eclipse 以便获取新的环境设置,然后将 PyQt5 添加到解释器的强制内置列表中(Window->preferences->pydev->interpreters->pythonterpreters)或查看此处http://www.pydev.org/manual_101_interpreter.html http://www.pydev.org/manual_101_interpreter.html更多细节。
以下问题提示我变量的存在:使用 PyQt5 设置 IPython Qtconsole https://stackoverflow.com/questions/24324621/setting-up-ipython-qtconsole-with-pyqt。在设置它之前,我只需将“PyQt5”添加到内置函数即可获得一些完成功能,但它不会提供完整的完成列表,例如from PyQt5.QtGui import
,即使 ipython 独立会。此外,pydev中的python控制台也有同样的问题并调用module_completion("from PyQt5.QtGui import Q")
from Ipython.core.completerlib
产生了同样的不完整列表。最后,我猜测,由于 pydev 正在为 gui 事件循环加载 PyQt4(也可以在解释器设置中进行配置),因此当它尝试内省 Qt5 模块时,会出现命名空间冲突,导致它在构建之前就退出了。完整的竣工清单。设置环境变量会导致 pydev 加载 pyqt5 而不是默认的 pyqt4。我没有检查过,但似乎这样设置 pydev 在完成 pyqt4 引用时会遇到问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)