【发布时间】:2017-05-14 19:23:11
【问题描述】:
我正在从事一个涉及 PyQt5 的项目,我正在努力管理小部件之间的继承。
我有一个继承 QtWidgets.QWidget 的 QWidget 屏幕和另一个由 QtDesigner 生成的类。它的内容如下:
class a(QtWidgets.QWidget, Ui_a):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.setupUi(self)
<some attributes>
<some functions
在这里,我继承了Ui_a,一个存储在生成文件中的单独类,我可以调用setupUi(Ui_a的一个方法)很好。
我现在想创建另一个类b,它也是一个需要显示的QWidget。此类b 需要使用类a 中的一些功能和属性。我可以很容易地复制粘贴所需的东西,但这是不好的做法,所以我正在寻找一个更简洁的解决方案。如果我做代码:
class b(QtWidgets.QWidget, Ui_b, a):
def __init__(self, parent=None):
QtWidgets.QWidget.__init(self, parent)
self.setupUi(self)
然后这会崩溃并显示一条错误消息,指出它无法创建一致的方法解析顺序。
我的第一个问题是 - 我知道我需要调用类 a 的 init 方法,因为 a 的属性是在那里创建的,但我不知道如何。
我的第二个问题是 - 如何修复这个 MRO 错误并成功创建可以使用 a 的属性和函数的新类 b?
【问题讨论】:
标签: python class pyqt multiple-inheritance