Qt Designer предоставляет класс, который служит для заполнения виджета, поэтому рекомендуемый способ - наследовать виджет и наследовать от сгенерированного класса Qt Designer, например, структура, которую предоставляет Qt Designer, имеет следующую структуру:
class MyClass(object):
def setupUi(self, AAA):
...
self.retranslateUi(AAA)
QtCore.QMetaObject.connectSlotsByName(AAA)
def retranslateUi(self, AAA):
...
Затем, в зависимости от шаблона, вы должны выбрать в качестве MyBaseClass QMainWindow, QDialog или QWidget и вызвать setupUi()
- метод, которым вы добавляете другой виджет в окно, как вы указали:
class MyPopup1(MyBaseClass, MyClass):
def __init__(self, parent=None):
super(MyPopup1, self).__init__(parent)
self.setupUi(self)
...
Но в случае, если вы собираетесь создать виджет, MyClass не требуется, поэтому в вашем случае решение будет следующим:
from PyQt5 import QtWidgets
class MyPopup2(QtWidgets.QMessageBox):
def __init__(self, parent=None):
super(MyPopup2, self).__init__(parent)
self.setWindowTitle("My Popup 2")
self.setText("Some text")
self.setIcon(QtWidgets.QMessageBox.Question)
self.addButton("Btn1", QtWidgets.QMessageBox.RejectRole)
self.addButton("Btn2", QtWidgets.QMessageBox.ActionRole)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
popup = MyPopup2()
if popup.exec_() == QtWidgets.QMessageBox.Accepted:
print("Btn2")
else:
print("Btn1")