Я пытаюсь создать производный виджет PyQt5.QtWidgets.QWidget
, в то же время наследуя от другого базового класса, Base
.
Наследование от Base
вызывает ошибку при вызове QWidget
конструктор, говоря, что я никогда не предоставлял аргументы, которые необходимы Base
.
Вот как я пытаюсь вызвать конструкторы QWidget
и Base
:
class Deriv(QtWidgets.QWidget, Base):
def __init__(self):
QtWidgets.QWidget.__init__(self)
Base.__init__(self, "hello world")
Ошибка I 'm get говорит:
QtWidgets.QWidget.__init__(self)
TypeError: __init__() missing 1 required positional argument: 'id'
Можно ли наследовать от QWidget
и Base
, и если да, то как правильно назвать их соответствующие конструкторы?
ВотПример приложения, которое воспроизводит ошибку, с которой я столкнулся:
#!/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
(так что просто удалите все, ссылаясь на Base
), тогда код работает
class Deriv(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
self.show()