def __init__(self, items, default="name", parent=None): QtGui.QWidget.__init__(self, parent) QtGui.QVBoxLayout(self) self.__default = default self.setMaximumHeight(200) self.list_widget = QtGui.QListWidget(self) self.list_widget.itemDoubleClicked.connect(self.list_widget.editItem) for item in (items or []): list_item = self.__newItem(item) self.list_widget.addItem(list_item) self.list_widget.sortItems() self.btn_add = QtGui.QPushButton(QtGui.QIcon(":/images/plus.png"), "", self) self.btn_add.setFlat(True) self.btn_add.clicked.connect(self.addItem) self.btn_sub = QtGui.QPushButton(QtGui.QIcon(":/images/minus.png"), "", self) self.btn_sub.setFlat(True) self.btn_sub.clicked.connect(self.removeItems) layout_btn = QtGui.QHBoxLayout() layout_btn.setContentsMargins(0, 0, 0, 0) layout_btn.setSpacing(1) layout_btn.addStretch() layout_btn.addWidget(self.btn_add) layout_btn.addWidget(self.btn_sub) self.layout().addWidget(self.list_widget) self.layout().addLayout(layout_btn)
def __init__(self, value, parent): QtGui.QWidget.__init__(self, parent) self.__locked = QtGui.QPushButton("Locked", self) self.__locked.setObjectName("Locked") self.__locked.setAutoExclusive(True) self.__locked.setCheckable(True) self.__locked.setStyleSheet(_LOCKED_BTN_STYLE) self.__locked.setFocusPolicy(QtCore.Qt.NoFocus) self.__unlocked = QtGui.QPushButton("UnLocked", self) self.__unlocked.setObjectName("Unlocked") self.__unlocked.setAutoExclusive(True) self.__unlocked.setCheckable(True) self.__unlocked.setStyleSheet(_UNLOCKED_BTN_STYLE) self.__unlocked.setFocusPolicy(QtCore.Qt.NoFocus) if value: self.__locked.setChecked(True) else: self.__unlocked.setChecked(True) l = QtGui.QHBoxLayout(self) l.setSpacing(0) l.setContentsMargins(0, 0, 0, 0) l.addWidget(self.__locked) l.addWidget(self.__unlocked)
def __init__(self, title, options, selected=None, icons=None, parent=None): QtGui.QWidget.__init__(self, parent) layout = QtGui.QVBoxLayout(self) self.__btn = btn = QtGui.QPushButton(title) btn.setFocusPolicy(QtCore.Qt.NoFocus) btn.setMaximumHeight(22) btn.setFlat(True) btn.setContentsMargins(0, 0, 0, 0) self.__menu = menu = QtGui.QMenu(self) btn.setMenu(menu) self.setOptions(options, selected, icons) layout.addWidget(btn) btn.toggled.connect(btn.showMenu) menu.triggered.connect( lambda action: self.optionSelected.emit(action.text()))
def __init__(self, filt=None, items=None, data=None, parent=None): super(FilterableListBox, self).__init__(parent) self.__data = {} height = 20 self.__txt_label = QtGui.QLabel(self) self.__txt_filter = QtGui.QLineEdit(self) self.__txt_filter.setFixedHeight(height) self.__txt_filter.textChanged.connect(self.__filterChanged) self.__txt_clear = btn = QtGui.QPushButton(self) btn.setIcon(QtGui.QIcon(":/images/delete.png")) btn.setFlat(True) btn.setFixedSize(height, height) btn.setIconSize(QtCore.QSize(14, 14)) btn.setVisible(False) self.__model = QtGui.QStringListModel(self) self.__proxyModel = proxy = QtGui.QSortFilterProxyModel(self) proxy.setSourceModel(self.__model) self.__list = view = QtGui.QListView(self) view.setSelectionMode(self.__list.ExtendedSelection) view.setModel(proxy) proxy.sort(0) proxy.setDynamicSortFilter(True) layout = QtGui.QVBoxLayout(self) layout.setSpacing(4) layout.setContentsMargins(0, 0, 0, 0) hlayout = QtGui.QHBoxLayout() hlayout.setSpacing(0) hlayout.setContentsMargins(0, 0, 0, 0) hlayout.addWidget(self.__txt_label) hlayout.addSpacing(2) hlayout.addWidget(self.__txt_filter) hlayout.addWidget(self.__txt_clear) layout.addLayout(hlayout) layout.addWidget(self.__list) # connections self.__list.doubleClicked.connect(self._itemDoubleClicked) self.__list.clicked.connect(self._itemClicked) self.__selModel = self.__list.selectionModel() self.__selModel.selectionChanged.connect(self._selectionChanged) self.__txt_filter.textChanged.connect( lambda v: self.__txt_clear.setVisible(bool(v))) self.__txt_clear.clicked.connect(lambda: self.setFilter('')) if items: self.setStringList(items) if filt: self.setFilter(filt)