- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Python 3 和 PyQt5 开发一个小型图形应用程序。在我使用的第一台计算机上,只安装了 PyQt5,我的代码中的一切都很好。但是当我想在安装了 PyQt4 和 PyQt5 的另一台笔记本电脑上运行我的代码时,出现以下错误:
RuntimeError: the PyQt5.QtCore and PyQt4.QtCore modules both wrap the QObject class
Python 解释器在从主文件调用的文件“ViewWindow.py”中找到错误。
由于我在这台笔记本电脑上同时安装了 PyQt4 和 PyQt5,并且因为我无法卸载 PyQt4(这太容易了......),我想知道是否可以强制使用 PyQt5.QtCore 或其他东西来避免这个问题。我在这台笔记本电脑上的配置:Debian 8、Python3.4、PyQt4 和 5(没有特殊配置,从 Debian 存储库安装),IDE = Spyder。
我将文件 main.py
和 ViewWindow.py
的第一行放在那里。
# main.py
import sys
import sqlite3
import ViewWindow
from DataWindow import DataWindow
from PyQt5.QtCore import QObject # I tried adding this line, but nothing changed...
from PyQt5.QtWidgets import (QApplication,
QWidget,
QGridLayout,
QHBoxLayout,
QLabel,
QLineEdit,
QPushButton,
QTextEdit,
QVBoxLayout
)
class MainWindow(QWidget):
# Some cool stuff
# ViewWindow.py
import sys
import sqlite3
from PyQt5.QtCore import QObject # same thing than above, adding this line doesn't change the output.
from PyQt5.QtWidgets import (QApplication,
QWidget,
QGridLayout,
QLabel,
QPushButton,
QVBoxLayout
)
class ViewWindow(QWidget):
有人知道如何运行这段代码吗?
谢谢,
杰瑞·M。
编辑:我试图运行那个强制使用 Python3 的脚本,它成功了……看来问题来自 iPython3。感谢您的帮助。
最佳答案
带有消息的RuntimeError
the
PyQt5.QtCore
andPyQt4.QtCore
modules both wrap theQObject
class
在您尝试导入 PyQt5.QtCore
时引发,而 PyQt4.QtCore
之前已导入。
此错误在 SIP 内引发,用于连接到 Qt。就像它声明的那样,它只允许有一个模块声称要包装 QObject
。因此,该错误只是告诉您,您正在同时使用 PyQt4 和 PyQt5。
因此您需要找到加载 PyQt4 的模块,将其配置为使用 PyQt5。或者,您可以尝试将 from PyQt5.QtCore import QObject
放在任何其他导入之前,并希望通常从 PyQt4 导入的模块具有适应性,并且能够使用 PyQt5 作为后备。
关于python - 如何强制 PyQt5 用于 QObject 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697089/
以下是我遇到的编译错误: /usr/lib/qt-3.3/include/qobject.h: In copy constructor Product::Product(const Product&)
class CHIProjectData : public QObject { public: CHIProjectData(); CHIProjectData(QMap aProje
这个问题在这里已经有了答案: Could I have copy constructor for subclass of QObject? (3 个答案) 关闭 7 年前。 我收到错误: C:\Qt
将一个项目从 Qt4 迁移到 Qt5 我得到了这个错误,我已经研究过,显然你不能从 QObject 创建一个派生类的复制构造函数(这太不可思议了,因为这段代码不是我的,它应该在以前的版本中编译).复制
我试图返回一个派生自 QObject 的类,但出现以下错误 Error : 'QObject::QObject' : cannot access private member declared in
我正在编写一些派生自 QObject 的 Qt 类,它看起来像: class A : public QObject { Q_OBJECT public: A() : QObject() {}
考虑以下代码: #include class A : public QObject { Q_OBJECT public: A(QObject* parent = 0)
我似乎需要 QObject 类型的 p 实例,我已经扩展了 QObject 并在 fileprocessor.h 中定义了关键字 Q_OBJECT,我不确定我还能做什么。 -文件处理器.h #ifnd
我有一个继承 QObject 的类 BatchItem,还有几个继承自 BatchItem 的类: #ifndef BATCHITEM_H #define BATCHITEM_H #include
这是代码: void invokeQMLFunction2Arg(QObject * object, QString func, QVariant p1, QVariant p2) { QMe
我读过 documentation对于 QObject::connect(对于 Qt 5.4),但我对重载有疑问 QMetaObject::Connection QObject::connect(co
我最近一直在使用QTCreator,我爱上了ATM。不幸的是,我想将它与 Python 一起使用,但我遇到了问题。我遇到的最大问题是发现我的应用程序上下文的子级返回 None。 main.py imp
使用 #include 有什么区别吗?和 #include ? 这两个似乎都有效,所以必须有一些原因来说明为什么 #include是首选吗? 最佳答案 任何不带 .h 扩展名的标准 Qt 头文件都保证
我写的Python代码看起来像这样: class Regularblock(QGraphicsItem): def __init__(self): super(QGraphic
Qt 框架有一个 signal for all QObjects which is emmited before destruction那个QObject。此事件可用于在它指向的对象被销毁时自动清空一
我想创建 SerialPort 类,它可以自动接收消息,然后发出信号。 但是当我编译它时显示错误信息: error: 'QObject' is an ambiguous base of 'Serial
(C++/Qt) 我有一个指向 QObject 的智能指针。让我们说一个 QWeakPointer。由于某些外部原因(可能发生在另一个对象中或由于某个事件),指向的对象可能会被销毁。因为我有一个智能指
QObject 析构函数的 Qt 引用说: 进出该对象的所有信号都会自动断开,该对象的任何未决发布事件都会从事件队列中删除。但是,使用 deleteLater() 通常比删除更安全直接一个 QObje
您好,我需要从后台进行一些套接字通信,我为此使用了QtConcurrent::run,但给了我警告。 QObject: Cannot create children for a parent that
如何打破 QObject 的父子所有权?似乎不再有明确的方法来做到这一点。打电话就够了 QObject::setParent(NULL) 最佳答案 你是对的。制作 QObject一个孤儿,简单地做 /
我是一名优秀的程序员,十分优秀!