我想创造一个
PyQt5.QtWidgets.QWidget
派生的小部件,同时从另一个基类继承,
Base
.
继承自
底座
在调用
QWidget
构造函数,说我从来没有提供
底座
我试着这样称呼
和
底座
class Deriv(QtWidgets.QWidget, Base):
def __init__(self):
QtWidgets.QWidget.__init__(self)
Base.__init__(self, "hello world")
QtWidgets.QWidget.__init__(self)
TypeError: __init__() missing 1 required positional argument: 'id'
有没有可能从两者继承
QWidget工具
底座
,如果是,如何正确调用它们各自的构造函数?
下面是一个示例应用程序,它再现了我遇到的错误:
#!/usr/bin/env python3
import sys
from PyQt5 import QtWidgets
class Base(object):
def __init__(self, id):
self.id = id
class Deriv(QtWidgets.QWidget, Base):
def __init__(self):
QtWidgets.QWidget.__init__(self)
Base.__init__(self, "hello world")
self.show()
def main():
app = QtWidgets.QApplication(sys.argv)
d = Deriv()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
以下是回溯:
Traceback (most recent call last):
File "./test.py", line 22, in <module>
main()
File "./test.py", line 18, in main
d = Deriv()
File "./test.py", line 11, in __init__
QtWidgets.QWidget.__init__(self)
TypeError: __init__() missing 1 required positional argument: 'id'
注意如果我
只继承自
QWidget工具
(所以删除所有涉及
底座
),则代码工作
class Deriv(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
self.show()