如何将父级传递给 QMessage 子类

How to pass a parent to a QMessage subclass

如何正确地将父类传递给 QMessgaeBox 子类?如果我不使用父级,则消息框不会出现在 window!

的中心
class onCloseMessage(QMessageBox):
    def __init__(self):
        QMessageBox.__init__(self, QMessageBox.Question, "title", "message",
                             buttons= QMessageBox.Close)

dlg = onCloseMessage()
dlg.exec()

当我传递一个父对象,并用父对象替换 __init__ 中的 self 时,它会出错。如果我使用 super,那么我如何才能 __init__ QMessageBox?

我试过了:

class onCloseMessage(QMessageBox):
    def __init__(self, parent):
        super().__init__(parent)
        QMessageBox.__init__(self, QMessageBox.Question, "title", "message",
                             buttons= QMessageBox.Close)

但是,也没用。

使用 super 时,您不应同时调用 base-class __init__。相反,将所有必需的参数传递给 super 本身,如下所示:

class onCloseMessage(QMessageBox):
    def __init__(self, parent):
        super().__init__(QMessageBox.Question, "title", "message",
                         buttons=QMessageBox.Close, parent=parent)

(注意:您可以在 Qt signature 显示默认参数的任何地方使用 Python 关键字参数。