def __init__(self): QWidget.__init__(self) self._line_edit = ClearableLineEdit() self._calendar_button = QToolButton() self._calendar_button.setPopupMode(QToolButton.InstantPopup) self._calendar_button.setFixedSize(26, 26) self._calendar_button.setAutoRaise(True) self._calendar_button.setIcon(resourceIcon("calendar_date_range.svg")) self._calendar_button.setStyleSheet( "QToolButton::menu-indicator { image: none; }") tool_menu = QMenu(self._calendar_button) self._calendar_widget = QCalendarWidget(tool_menu) action = QWidgetAction(tool_menu) action.setDefaultWidget(self._calendar_widget) tool_menu.addAction(action) self._calendar_button.setMenu(tool_menu) layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._line_edit) layout.addWidget(self._calendar_button) self.setLayout(layout) self._calendar_widget.activated.connect(self.setDate)
def createDoubleLineEdit(self, minimum=None, maximum=None, placeholder=""): line_edit = ClearableLineEdit(placeholder=placeholder) validator = QDoubleValidator() if minimum is not None: validator.setBottom(minimum) if maximum is not None: validator.setTop(maximum) line_edit.setValidator(validator) return line_edit
def addLineEdit(self, attribute_name, title, tool_tip=None, placeholder=""): self[attribute_name] = ClearableLineEdit(placeholder=placeholder) self.addRow(title, self[attribute_name]) if tool_tip is not None: self[attribute_name].setToolTip(tool_tip) def getter(self): value = str(self[attribute_name].text()) if value == "": value = None return value def setter(self, value): if value is None: value = "" self[attribute_name].setText(str(value)) self.updateProperty(attribute_name, getter, setter)