我正在尝试将用Qt4编写的C++自定义小部件转换为Python2.7自定义小部件。但是,我还没有弄清楚QLabel(parent)
是如何用Python编写的。这是来自“C++”文件的原始.ccp代码:
DocumentWidget::DocumentWidget(QWidget *parent)
: QLabel(parent)
{
currentPage = -1;
setAlignment(Qt::AlignCenter);
}
QLabel(parent)
似乎是某种初始化程序列表。我尝试在Python中并行使用多个继承,但这会导致以下错误:Cannot create a consistent method resolution order (MRO) for bases QLabel, QWidget
。
我试图移植代码,而不是为C++小部件创建一个包装器,因为我不了解C++,并且认为今后我必须进一步定制这个小部件。
我没有受过程序员的训练,这是我第一次遇到C++,所以,即使我做了一些愚蠢的事情,也可以随时纠正我。我不会觉得尴尬的。
发布于 2015-05-22 08:35:03
代码为DocumentWidget
类定义了一个构造函数,该类继承QLabel
,并要求以QWidget
作为父类。
等效的PyQt代码是:
from PyQt4 import QtCore, QtGui
class DocumentWidget(QtGui.QLabel):
def __init__(self, parent):
super(DocumentWidget, self).__init__(parent)
# or QtGui.QLabel.__init__(self, parent)
self.currentPage = -1
self.setAlignment(QtCore.Qt.AlignCenter)
发布于 2015-05-24 00:40:53
多重继承可以工作,但是必须按照正确的顺序调用基类(即DocumentWidget(QLabel, QWidget)
而不是DocumentWidget(QLabel, QWidget)
)。
全文:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class DocumentWidget(QLabel, QWidget):
def __init__(self, parent=None):
super(DocumentWidget, self).__init__()
self.currentPage = -1
self.setAlignment(Qt.AlignCenter)
https://stackoverflow.com/questions/30395720
复制相似问题