def __init__(self, parent=None, data=None, formWidget=None): super(FieldWidget, self).__init__(parent) self._data = data or {} self._error = False self._widget = None self._default = None self._required = None self._collapsed = False self._errorLabel = None self._menuButton = None self._actionResult = None self._formWidget = None if formWidget: self.setFormWidget(formWidget) self.setObjectName("fieldWidget") direction = self._data.get("layout", self.DefaultLayout) if direction == "vertical": layout = QtWidgets.QVBoxLayout(self) else: layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.setContentsMargins(0, 0, 0, 0) self._label = QtWidgets.QLabel(self) self._label.setObjectName('label') self._label.setSizePolicy( QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred, ) layout.addWidget(self._label) self._layout2 = QtWidgets.QHBoxLayout(self) layout.addLayout(self._layout2) if direction == "vertical": self._label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) else: self._label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) widget = self.createWidget() if widget: self.setWidget(widget)
def createWidget(self, menu): """ This method is called by the QWidgetAction base class. :type menu: QtWidgets.QMenu """ widget = QtWidgets.QFrame(self.parent()) widget.setObjectName("filterByAction") facet = self._facet name = facet.get("name") or "" count = str(facet.get("count", 0)) title = name.replace(".", "").title() label = QtWidgets.QCheckBox(widget) label.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents) label.setText(title) label.installEventFilter(self) label.toggled.connect(self._triggered) label.setChecked(self._checked) label2 = QtWidgets.QLabel(widget) label2.setObjectName("actionCounter") label2.setText(count) layout = QtWidgets.QHBoxLayout(widget) layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(label, stretch=1) layout.addWidget(label2) widget.setLayout(layout) return widget
def createWidget(self, menu): """ This method is called by the QWidgetAction base class. :type menu: QtWidgets.QMenu """ widget = QtWidgets.QFrame(self.parent()) widget.setObjectName("filterByAction") title = self._name # Using a checkbox so that the text aligns with the other actions label = QtWidgets.QCheckBox(widget) label.setText(title) label.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents) label.toggled.connect(self._triggered) label.setStyleSheet(""" #QCheckBox::indicator:checked { image: url(none.png) } QCheckBox::indicator:unchecked { image: url(none.png) } """) actionLayout = QtWidgets.QHBoxLayout(widget) actionLayout.setContentsMargins(0, 0, 0, 0) actionLayout.addWidget(label, stretch=1) widget.setLayout(actionLayout) return widget
def createWidget(self, parent): """ :type parent: QtWidgets.QMenu """ height = 25 spacing = 1 options = self.library().theme().options() styleSheet = studioqt.StyleSheet.fromText(LibraryAction.STYLE_SHEET, options=options) actionWidget = QtWidgets.QFrame(parent) actionWidget.setObjectName('actionWidget') actionWidget.setStyleSheet(styleSheet.data()) actionLabel = QtWidgets.QLabel(self.library().name(), actionWidget) actionLabel.setObjectName('actionLabel') actionLabel.setFixedHeight(height) iconColor = QtGui.QColor(255, 255, 255, 220) icon = studiolibrary.resource().icon('delete', color=iconColor) actionOption = QtWidgets.QPushButton('', actionWidget) actionOption.setObjectName('actionOption') actionOption.setIcon(icon) actionOption.setFixedHeight(height + spacing) actionOption.setFixedWidth(height) actionOption.clicked.connect(self.deleteLibrary) actionIcon = QtWidgets.QLabel('', actionWidget) actionIcon.setObjectName('actionIcon') actionIcon.setFixedWidth(10) actionIcon.setFixedHeight(height) actionLayout = QtWidgets.QHBoxLayout(actionWidget) actionLayout.setSpacing(0) actionLayout.setContentsMargins(0, 0, 0, 0) actionLayout.addWidget(actionIcon, stretch=1) actionLayout.addWidget(actionLabel, stretch=1) actionLayout.addWidget(actionOption, stretch=1) return actionWidget
def __init__(self, *args, **kwargs): super(ButtonGroupFieldWidget, self).__init__(*args, **kwargs) self._value = "" self._buttons = {} items = self.data().get('items') widget = QtWidgets.QFrame() layout = QtWidgets.QHBoxLayout(widget) layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) widget.setLayout(layout) i = 0 for item in items: i += 1 button = QtWidgets.QPushButton(toTitle(item), self) button.setCheckable(True) callback = functools.partial(self.setValue, item) button.clicked.connect(callback) self._buttons[item] = button if i == 1: button.setProperty('first', True) if i == len(items): button.setProperty('last', True) widget.layout().addWidget(button) self.setWidget(widget)
def __init__(self, *args): QtWidgets.QWidget.__init__(self, *args) layout = QtWidgets.QHBoxLayout(self) self.setLayout(layout) layout.setContentsMargins(0,0,0,0) layout.setSpacing(0) self._dataset = None self._iconPadding = 6 self._iconButton = QtWidgets.QPushButton(self) self._iconButton.clicked.connect(self._onClicked) layout.addWidget(self._iconButton) icon = studiolibrary.resource().icon("pokeball") self._iconButton.setIcon(icon) self._comboBox = QtWidgets.QComboBox(self) layout.addWidget(self._comboBox, 1) self._comboBox.addItem("Select a character", "") self._comboBox.installEventFilter(self) self._comboBox.activated.connect(self._onActivated) self._comboBox.setSizePolicy( QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.setSizePolicy( QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.update()
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, *args): QtWidgets.QFrame.__init__(self, *args) self.setObjectName("statusWidget") self.setFrameShape(QtWidgets.QFrame.NoFrame) self._blocking = False self._timer = QtCore.QTimer(self) self._label = QtWidgets.QLabel("", self) self._label.setCursor(QtCore.Qt.IBeamCursor) self._label.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) self._label.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) self._button = QtWidgets.QPushButton(self) self._button.setMaximumSize(QtCore.QSize(17, 17)) self._button.setIconSize(QtCore.QSize(17, 17)) layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(1, 0, 0, 0) layout.addWidget(self._button) layout.addWidget(self._label) self.setLayout(layout) self.setFixedHeight(19) self.setMinimumWidth(5) QtCore.QObject.connect(self._timer, QtCore.SIGNAL("timeout()"), self.reset)
def __init__(self, *args): QtWidgets.QFrame.__init__(self, *args) self.setObjectName("statusWidget") self.setFrameShape(QtWidgets.QFrame.NoFrame) self._label = QtWidgets.QLabel("Hello :)", self) policy = QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred self._label.setSizePolicy(*policy) self._timer = QtCore.QTimer(self) self._button = QtWidgets.QPushButton(self) self._button.setMaximumSize(QtCore.QSize(17, 17)) self._button.setIconSize(QtCore.QSize(17, 17)) layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(1, 0, 0, 0) layout.addWidget(self._button) layout.addWidget(self._label) self.setLayout(layout) self.setFixedHeight(19) self.setMinimumWidth(5) QtCore.QObject.connect(self._timer, QtCore.SIGNAL("timeout()"), self.clear)
def __init__(self, *args): QtWidgets.QWidget.__init__(self, *args) self._dpi = 1 self._padding = self.DEFAULT_PADDING w, h = self.DEFAULT_ZOOM_AMOUNT, self.DEFAULT_ZOOM_AMOUNT self._iconSize = QtCore.QSize(w, h) self._itemSizeHint = QtCore.QSize(w, h) self._zoomAmount = self.DEFAULT_ZOOM_AMOUNT self._isItemTextVisible = True self._dataset = None self._treeWidget = TreeWidget(self) self._support_drag = self.DEFAULT_SUPPORT_DRAG self._listView = ListView(self._support_drag, self) self._listView.setTreeWidget(self._treeWidget) self._delegate = ItemDelegate() self._delegate.setItemsWidget(self) self._listView.setItemDelegate(self._delegate) self._treeWidget.setItemDelegate(self._delegate) self._toastWidget = ToastWidget(self) self._toastWidget.hide() self._toastEnabled = True self._textColor = QtGui.QColor(255, 255, 255, 200) self._textSelectedColor = QtGui.QColor(255, 255, 255, 200) self._backgroundColor = QtGui.QColor(255, 255, 255, 30) self._backgroundHoverColor = QtGui.QColor(255, 255, 255, 35) self._backgroundSelectedColor = QtGui.QColor(30, 150, 255) layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._treeWidget) layout.addWidget(self._listView) header = self.treeWidget().header() header.sortIndicatorChanged.connect(self._sortIndicatorChanged) self.setLayout(layout) self.listView().itemClicked.connect(self._itemClicked) self.listView().itemDoubleClicked.connect(self._itemDoubleClicked) self.treeWidget().itemClicked.connect(self._itemClicked) self.treeWidget().itemDoubleClicked.connect(self._itemDoubleClicked) self.itemMoved = self._listView.itemMoved self.itemDropped = self._listView.itemDropped self.itemSelectionChanged = self._treeWidget.itemSelectionChanged
def __init__(self, *args): QtWidgets.QFrame.__init__(self, *args) self._buttons = [] self._currentColor = None self._browserColors = None layout = QtWidgets.QHBoxLayout() layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout)
def __init__(self, libraries, parent=None): super(FolderLibraryCreateCustomWidget, self).__init__(parent) layout = QtWidgets.QHBoxLayout(self) self._label = QtWidgets.QLabel(libraries[0], self) layout.addWidget(self._label, 100) self._menu = studiolibrary.widgets.LibrarySelectMenu( libraries, 'to create', self) self._pushButton = QtWidgets.QPushButton("...", self) self._pushButton.clicked.connect(self._onclicked) layout.addWidget(self._pushButton, 1)
def createWidget(self, parent): """ :type parent: QtWidgets.QMenu """ actionWidget = self.frame() actionWidget.setObjectName('sliderActionWidget') actionLayout = QtWidgets.QHBoxLayout(actionWidget) actionLayout.setSpacing(0) actionLayout.setContentsMargins(0, 0, 0, 0) actionLayout.addWidget(self.label()) actionLayout.addWidget(self.slider()) actionWidget.setLayout(actionLayout) return actionWidget
def __init__(self, parent=None, form=None): super(FormDialog, self).__init__(parent) layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.setLayout(layout) self._widgets = [] self._validator = None self._title = QtWidgets.QLabel(self) self._title.setObjectName('title') self._title.setText('FORM') self.layout().addWidget(self._title) self._description = QtWidgets.QLabel(self) self._description.setObjectName('description') self.layout().addWidget(self._description) self._formWidget = FormWidget(self) self._formWidget.setObjectName("formWidget") self._formWidget.validated.connect(self._validated) self.layout().addWidget(self._formWidget) self.layout().addStretch(1) buttonLayout = QtWidgets.QHBoxLayout(self) buttonLayout.setContentsMargins(0, 0, 0, 0) buttonLayout.setSpacing(0) self.layout().addLayout(buttonLayout) buttonLayout.addStretch(1) self._acceptButton = QtWidgets.QPushButton(self) self._acceptButton.setObjectName('acceptButton') self._acceptButton.setText('Submit') self._acceptButton.clicked.connect(self.accept) self._rejectButton = QtWidgets.QPushButton(self) self._rejectButton.setObjectName('rejectButton') self._rejectButton.setText('Cancel') self._rejectButton.clicked.connect(self.reject) buttonLayout.addWidget(self._acceptButton) buttonLayout.addWidget(self._rejectButton) if form: self.setSettings(form)
def createWidget(self, menu): """ This method is called by the QWidgetAction base class. :type menu: QtWidgets.QMenu """ actionWidget = self.widget() actionLayout = QtWidgets.QHBoxLayout(actionWidget) actionLayout.setContentsMargins(0, 0, 0, 0) actionLayout.addWidget(self.line()) actionWidget.setLayout(actionLayout) return actionWidget
def createWidget(self, menu): """ This method is called by the QWidgetAction base class. :type menu: QtWidgets.QMenu """ widget = QtWidgets.QFrame(self.parent()) widget.setObjectName("colorPickerAction") actionLayout = QtWidgets.QHBoxLayout(widget) actionLayout.setContentsMargins(0, 0, 0, 0) actionLayout.addWidget(self.picker(), stretch=1) widget.setLayout(actionLayout) return widget
def __init__(self, parent=None): QtWidgets.QFrame.__init__(self, parent) self._dpi = 1 self._expanded = True self._expandedHeight = self.DEFAULT_EXPANDED_HEIGHT self._collapsedHeight = self.DEFAULT_COLLAPSED_HEIGHT layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(self.SPACING) self.setLayout(layout) self._leftToolBar = QtWidgets.QToolBar(self) self._rightToolBar = QtWidgets.QToolBar(self) self._leftToolBar.layout().setSpacing(self.SPACING) self._rightToolBar.layout().setSpacing(self.SPACING) self.layout().addWidget(self._leftToolBar) self.layout().addWidget(self._rightToolBar)
def setWidget(self, widget): """ Set the widget used to set and get the field value. :type widget: QtWidgets.QWidget """ widgetLayout = QtWidgets.QHBoxLayout() widgetLayout.setContentsMargins(0, 0, 0, 0) widgetLayout.setSpacing(0) self._widget = widget self._widget.setParent(self) self._widget.setObjectName('widget') self._widget.setSizePolicy( QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred, ) self._menuButton = QtWidgets.QPushButton("...") self._menuButton.setHidden(True) self._menuButton.setObjectName("menuButton") self._menuButton.clicked.connect(self._menuCallback) self._menuButton.setSizePolicy( QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding, ) widgetLayout.addWidget(self._widget) widgetLayout.addWidget(self._menuButton) layout = QtWidgets.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self._errorLabel = QtWidgets.QLabel(self) self._errorLabel.setHidden(True) self._errorLabel.setObjectName("errorLabel") self._errorLabel.setSizePolicy( QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred, ) layout.addLayout(widgetLayout) layout.addWidget(self._errorLabel) self._layout2.addLayout(layout)
def __init__(self, *args, **kwargs): super(StringDoubleFieldWidget, self).__init__(*args, **kwargs) widget = QtWidgets.QFrame(self) layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(3) widget.setLayout(layout) self._widget1 = QtWidgets.QLineEdit(self) self._widget1.textChanged.connect(self.emitValueChanged) widget.layout().addWidget(self._widget1) self._widget2 = QtWidgets.QLineEdit(self) self._widget2.textChanged.connect(self.emitValueChanged) widget.layout().addWidget(self._widget2) self.setWidget(widget)
def __init__(self, *args, **kwargs): super(RangeOptionWidget, self).__init__(*args, **kwargs) widget = QtWidgets.QFrame(self) layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(3) widget.setLayout(layout) self._minwidget = QtWidgets.QSpinBox(self) self._minwidget.valueChanged.connect(self.emitValueChanged) widget.layout().addWidget(self._minwidget) self._maxwidget = QtWidgets.QSpinBox(self) self._maxwidget.valueChanged.connect(self.emitValueChanged) widget.layout().addWidget(self._maxwidget) self.setWidget(widget)
def __init__(self, parent = None, themes = None): """ :type parent: QtWidgets.QWidget :type themes: list[Theme] """ QtWidgets.QWidget.__init__(self, parent) if not themes: themes = themePresets() layout = QtWidgets.QHBoxLayout(self) layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) for theme in themes: color = theme.accentColor().toString() themeWidget = QtWidgets.QPushButton(self) themeWidget.setStyleSheet('background-color: ' + color) callback = partial(self.themeClicked.emit, theme) themeWidget.clicked.connect(callback) layout.addWidget(themeWidget)
def __init__(self, *args, **kwargs): super(OptionWidget, self).__init__(*args, **kwargs) self._option = {} self._widget = None self._default = None self._required = None layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) self.setContentsMargins(0, 0, 0, 0) self._label = QtWidgets.QLabel(self) self._label.setObjectName('label') self._label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) layout.addWidget(self._label)
def __init__(self, *args, **kwargs): super(RangeFieldWidget, self).__init__(*args, **kwargs) widget = QtWidgets.QFrame(self) layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(3) widget.setLayout(layout) validator = QtGui.QIntValidator(-50000000, 50000000, self) self._minwidget = QtWidgets.QLineEdit(self) self._minwidget.setValidator(validator) self._minwidget.textChanged.connect(self.emitValueChanged) widget.layout().addWidget(self._minwidget) self._maxwidget = QtWidgets.QLineEdit(self) self._maxwidget.setValidator(validator) self._maxwidget.textChanged.connect(self.emitValueChanged) widget.layout().addWidget(self._maxwidget) self.setWidget(widget)
def __init__(self, parent=None, options=None): super(OptionWidget, self).__init__(parent) self._option = options or {} self._widget = None self._default = None self._required = None direction = self._option.get("layout", "horizontal") self.setProperty("layout", direction) if direction == "vertical": layout = QtWidgets.QVBoxLayout(self) else: layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.setLayout(layout) self.setContentsMargins(0, 0, 0, 0) self._label = QtWidgets.QLabel(self) self._label.setObjectName('label') self._label.setSizePolicy( QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred, ) layout.addWidget(self._label) if direction == "vertical": self._label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) else: layout.setStretchFactor(self._label, 2) self._label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
def __init__(self, *args): QtWidgets.QFrame.__init__(self, *args) layout = QtWidgets.QHBoxLayout() layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) self._label = QtWidgets.QLabel("", self) self._label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self._label.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) layout.addWidget(self._label) self._progressBar = QtWidgets.QProgressBar(self) self._progressBar.setFormat("") self._progressBar.setRange(0, 100) self._progressBar.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) layout.addWidget(self._progressBar) self.setLayout(layout)
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()