我有一个对话框类继承了pyside-uic生成的python类,但我的问题是它无法扩展我添加另一个基类。PySide,PysideUIC和多继承
import sys
from PySide import QtGui
from mi_ui import Ui_Dialog
class Worker(object):
def __init__(self):
super(Worker, self).__init__()
self.data = 1
class MainDialog(QtGui.QDialog, Ui_Dialog, Worker):
def __init__(self):
super(MainDialog, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
dlg = MainDialog()
print dlg.data
dlg.show()
sys.exit(app.exec_())
当我尝试用Worker
延长MainDialog
,超级不叫Worker
的__init__
因为打印dlg.data失败‘AttributeError的:‘MainDialog’对象有没有属性‘数据’’
我唯一的工作似乎忽略超级,并手动调用每个__init__
。
QtGui.QDialog.__init__(self)
Worker.__init__(self)
这是我唯一的解决方案吗?
这是针对Python 2.7的。
就我的经验而言,'super()'不适用于Qt的PySide包装器,我不认为PyQt在这里有什么不同。所以手动调用'__init__'可能是你唯一的方法。只要确保避免(或绕过)菱形遗产。 – quazgar