def __init__(self, parent, buttons=None): super(XPopupButton, self).__init__(parent) # define custom options if buttons is None: buttons = QDialogButtonBox.Reset buttons |= QDialogButtonBox.Save buttons |= QDialogButtonBox.Cancel self._popupWidget = XPopupWidget(self, buttons) self._defaultAnchor = 0 self._popupShown = False self.setEnabled(False) # create connections self.clicked.connect(self.clickAction) self.triggered.connect(self.togglePopupOnAction) self._popupWidget.accepted.connect(self.popupAccepted) self._popupWidget.rejected.connect(self.popupRejected) self._popupWidget.resetRequested.connect(self.popupReset)