在两个QDialog之间传播调色板

时间:2014-07-07 11:48:59

标签: qt4 pyqt4

我有两个QDialog类,DialogA和DialogB。 DialogA使用自定义调色板。它包含一个DialogB实例,并在用户按下按钮时打开它。将调色板从DialogA传播到DialogB的正确方法是什么?我正在做以下事情:

class DialogA(QDialog):
    def __init__(self,parent=None):
        super(DialogA, self).__init__(parent)
        # Palette setup in this class
        ...
        DialogB = DialogB(self)

class DialogB(QDialog):
    def __init__(self,parent=None):
        super(DialogB, self).__init__(parent)
        if parent != None:
            self.setPalette(parent.pallete())

有没有比检查if parent != None更好的方法?我很挑剔,不想让if语句执行这个逻辑。如果我自己拨打DialogB parent == None,那么我就无法拨打parent.pallete()

1 个答案:

答案 0 :(得分:1)

为什么不将参数添加到DialogB的构造函数?

class DialogA(QDialog):
    def __init__(self,parent=None):
        super(DialogA, self).__init__(parent)
        # Palette setup in this class
        ...
        DialogB = DialogB(self, palette)

class DialogB(QDialog):
    def __init__(self, palette, parent=None):
        super(DialogB, self).__init__(parent)
        self.setPalette(palette)