我试图创建一组继承QWidget,QMainWindow和QDialog的PySide类。另外,我想继承另一个类来覆盖一些函数,并设置小部件的布局。
示例:
密新:
class Mixin(object):
def __init__(self, parent, arg):
self.arg = arg
self.parent = parent
# Setup the UI from QDesigner
ui = Ui_widget()
ui.setupUi(self.parent)
def setLayout(self, layout, title):
self.parent.setWindowTitle(title)
self.parent.setLayout(layout)
def doSomething(self):
# Do something awesome.
pass
窗口小部件:
class Widget(Mixin, QtGui.QWidget):
def __init__(self, parent, arg):
super(Widget, self).__init__(parent=parent, arg=arg)
这不会奏效,但通过作曲来实现这一目标
小工具(组合):
class Widget(QtGui.QWidget):
def __init__(self, parent, arg):
super(Widget, self).__init__(parent=parent)
mixin = Mixin(parent=self, arg=arg)
self.setLayout = mixin.setLayout
self.doSomething = mixin.doSomething
我想尝试让小部件继承所有内容,而不是通过组合完成部分内容。谢谢!
答案 0 :(得分:3)
保留class Widget(Mixin, QtGui.Widget):
,但在super
中添加Mixin.__init__
来电。这应该确保调用__init__
和Mixin
的{{1}}方法,并且首先在MRO中找到QWidget
方法的Mixin
实现setLayout
。
Widget