def __init__(self, parent=None): super(MessageBox, self).__init__(parent) self.setMinimumWidth(300) self.setMaximumWidth(400) self._standardButtonClicked = None self._header = QtWidgets.QFrame(self) self._header.setStyleSheet("background-color: rgb(50,150,200,0);") self._header.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) self._header.setFixedHeight(46) self._icon = QtWidgets.QLabel(self._header) self._icon.setAlignment(QtCore.Qt.AlignTop) self._icon.setScaledContents(True) self._icon.setFixedWidth(28) self._icon.setFixedHeight(28) self._icon.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self._title = QtWidgets.QLabel(self._header) self._title.setStyleSheet("font: 14pt bold; color:rgb(255,255,255);") self._title.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) hlayout = QtWidgets.QHBoxLayout(self._header) hlayout.setSpacing(10) hlayout.addWidget(self._icon) hlayout.addWidget(self._title) self._header.setLayout(hlayout) self._message = QtWidgets.QLabel() self._message.setMinimumHeight(50) self._message.setWordWrap(True) self._message.setAlignment(QtCore.Qt.AlignLeft) self._message.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) self._message.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) options = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel self._buttonBox = QtWidgets.QDialogButtonBox(None, QtCore.Qt.Horizontal, self) self._buttonBox.clicked.connect(self._clicked) self._buttonBox.accepted.connect(self.accept) self._buttonBox.rejected.connect(self.reject) vlayout1 = QtWidgets.QVBoxLayout(self) vlayout1.setContentsMargins(0, 0, 0, 0) vlayout1.addWidget(self._header) vlayout2 = QtWidgets.QVBoxLayout(self) vlayout2.setSpacing(25) vlayout2.setContentsMargins(15, 5, 15, 5) vlayout2.addWidget(self._message) vlayout2.addWidget(self._buttonBox) vlayout1.addLayout(vlayout2) self.setLayout(vlayout1)
def __init__(self, parent=None, width=None, height=None, enableInputEdit=False, enableDontShowCheckBox=False, customInputWidget=None): super(MessageBox, self).__init__(parent) self.setObjectName("messageBox") self._frame = None self._animation = None self._dontShowCheckbox = False self._clickedButton = None self._clickedStandardButton = None self.setMinimumWidth(width or 320) self.setMinimumHeight(height or 220) parent = self.parent() if parent: parent.installEventFilter(self) self._frame = QtWidgets.QFrame(parent) self._frame.setObjectName("messageBoxFrame") self._frame.show() self.setParent(self._frame) self._header = QtWidgets.QFrame(self) self._header.setFixedHeight(46) self._header.setObjectName("messageBoxHeaderFrame") self._header.setStyleSheet("background-color: rgb(0,0,0,0);") self._header.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) self._icon = QtWidgets.QLabel(self._header) self._icon.hide() self._icon.setFixedWidth(32) self._icon.setFixedHeight(32) self._icon.setScaledContents(True) self._icon.setAlignment(QtCore.Qt.AlignTop) self._icon.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self._title = QtWidgets.QLabel(self._header) self._title.setObjectName("messageBoxHeaderLabel") self._title.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) hlayout = QtWidgets.QHBoxLayout(self._header) hlayout.setContentsMargins(15, 7, 15, 10) hlayout.setSpacing(10) hlayout.addWidget(self._icon) hlayout.addWidget(self._title) self._header.setLayout(hlayout) bodyLayout = QtWidgets.QVBoxLayout(self) self._body = QtWidgets.QFrame(self) self._body.setObjectName("messageBoxBody") self._body.setLayout(bodyLayout) self._message = QtWidgets.QLabel(self._body) self._message.setWordWrap(True) self._message.setMinimumHeight(15) self._message.setAlignment(QtCore.Qt.AlignLeft) self._message.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) self._message.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) bodyLayout.addWidget(self._message) bodyLayout.setContentsMargins(15, 15, 15, 15) if customInputWidget: self._customInputWidget = customInputWidget bodyLayout.addStretch(1) bodyLayout.addWidget(self._customInputWidget) bodyLayout.addStretch(10) if enableInputEdit: self._inputEdit = QtWidgets.QLineEdit(self._body) self._inputEdit.setObjectName("messageBoxInputEdit") self._inputEdit.setMinimumHeight(32) self._inputEdit.setFocus() bodyLayout.addStretch(1) bodyLayout.addWidget(self._inputEdit) bodyLayout.addStretch(10) if enableDontShowCheckBox: msg = "Don't show this message again" self._dontShowCheckbox = QtWidgets.QCheckBox(msg, self._body) bodyLayout.addStretch(10) bodyLayout.addWidget(self._dontShowCheckbox) bodyLayout.addStretch(2) self._buttonBox = QtWidgets.QDialogButtonBox(None, QtCore.Qt.Horizontal, self) self._buttonBox.clicked.connect(self._clicked) self._buttonBox.accepted.connect(self._accept) self._buttonBox.rejected.connect(self._reject) vlayout1 = QtWidgets.QVBoxLayout(self) vlayout1.setContentsMargins(0, 0, 0, 0) vlayout1.addWidget(self._header) vlayout1.addWidget(self._body) bodyLayout.addWidget(self._buttonBox) self.setLayout(vlayout1) self.updateGeometry()