def keyPressEvent(self, event): """ Delete event to remove items from asset list. """ if event.key() == QtCore.Qt.Key_Delete: if len(_asset_List.selectedItems()) > 0: try: global _missing_Textures_Index_List global _amount_Missing_Textures global _all_Files_List _missing_Textures_Index_List = [] _amount_Missing_Textures = 0 sel_Items = _asset_List.selectedItems() for item in sel_Items: x = _asset_List.indexFromItem(item) y = QtCore.QPersistentModelIndex(x) if y.isValid(): _asset_List.removeRow(y.row()) except: pass for i in range(_asset_List.rowCount()): # Updates the missing textures index list after deleting entries item_Path = _asset_List.item(i, 2).text() if not os.path.exists(item_Path): _amount_Missing_Textures += 1 _missing_Textures_Index_List.append(i) status_text = "Status: Found - " + str(len(_all_Files_List)) + " | " + "Missing - " + str(_amount_Missing_Textures) _status.setText(status_text) else: pass
def get_selected_index(widget): if not widget.selectionModel().hasSelection(): return QtCore.QModelIndex() index = next((f for f in widget.selectionModel().selectedIndexes()), QtCore.QModelIndex()) if not index.isValid(): return QtCore.QModelIndex() return QtCore.QPersistentModelIndex(index)
def _has_checked_ancestor(self, index: QtCore.QModelIndex) -> bool: parent = index.parent() while parent.isValid() and self.filePath(parent) != self.rootPath(): if QtCore.QPersistentModelIndex(parent) in self.selected: return True parent = parent.parent() return False
def focusOutEvent(self, event): if self.selectionModel().selectedIndexes(): for index in self.selectionModel().selectedRows(): self._last_indexes.append(QtCore.QPersistentModelIndex(index)) if self._last_indexes: for i in self._last_indexes: self.selectionModel().setCurrentIndex( i, QtGui.QItemSelectionModel.Select) event.accept()
def _data(self, index: QtCore.QModelIndex) -> int: "Get checkbox status data" persistent_index = QtCore.QPersistentModelIndex(index) if persistent_index in self.selected: return QtCore.Qt.Checked elif persistent_index in self.ancestors or self._has_checked_ancestor( index): return QtCore.Qt.PartiallyChecked # else return QtCore.Qt.Unchecked
def _set_check_state(self, index: QtCore.QModelIndex, value: int) -> None: "Set checkbox status data with no side effects on other indexes" persistent_index = QtCore.QPersistentModelIndex(index) if value == QtCore.Qt.Checked: self.ancestors.discard(persistent_index) self.selected.add(persistent_index) elif value == QtCore.Qt.PartiallyChecked: self.selected.discard(persistent_index) self.ancestors.add(persistent_index) elif value == QtCore.Qt.Unchecked: self.ancestors.discard(persistent_index) self.selected.discard(persistent_index)
def setData(self, index, value, role): # self.beginResetModel() if role == Qt.CheckStateRole: self.checks[QtCore.QPersistentModelIndex(index)] = value self.inp_.check_state.emit(value, index) return True if self.headerData(index.column(), Qt.Horizontal, Qt.DisplayRole) == 'Регистрация': self._data.loc[index.row(), 'План регистрация'] = ( pd.to_datetime(value) - pd.Timedelta(days=10)).date() self._data.iloc[index.row(), index.column()] = value self.dataChanged.emit(index, index) # self.endResetModel() return True
def eventFilter(self, widget, event): if widget is self.viewport(): index = self._last_index if event.type() == QtCore.QEvent.MouseMove: index = self.indexAt(event.pos()) elif event.type() == QtCore.QEvent.Leave: index = QtCore.QModelIndex() if index != self._last_index: row = self._last_index.row() column = self._last_index.column() item = self.itemAt(row, column) if item is not None: self.itemExited.emit(item) self.cellExited.emit(row, column) self._last_index = QtCore.QPersistentModelIndex(index) return QtGui.QTreeWidget.eventFilter(self, widget, event)
def data(self, index, role): value = self._data.iloc[index.row(), index.column()] if role == Qt.DisplayRole and self.headerData \ (index.column(), Qt.Horizontal, Qt.DisplayRole) != 'Каптча': if pd.isna(value): return ' ' return str(value) elif self.headerData \ (index.column(), Qt.Horizontal, Qt.DisplayRole) == 'Каптча': if role == Qt.CheckStateRole: return self.checkState(QtCore.QPersistentModelIndex(index)) else: return value elif role == Qt.ForegroundRole: if value == "Патент не оплачен!" or value == 'Не верно введена каптча': return QtGui.QColor('red') elif value == 'Патент оплачен!': return QtGui.QColor('green') elif value == 'Необходимо оформить новый патент!': return QtGui.QColor('blue')
def contextMenuEvent(self, event): contextMenu = QMenu(self) newAction = contextMenu.addAction("New") openAction = contextMenu.addAction("Open") quitAction = contextMenu.addAction("Quit") action = contextMenu.exec_(self.mapToGlobal(event.pos())) if action == quitAction: self.close() if action == openAction: # model = self.sti # indices = self.table.selectionModel().selectedRows() # for index in sorted(indices): # model.removeRow(index.row()) index_list = [] for model_index in self.table.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for index in index_list: self.sti.removeRow(index.row())
def __init__(self, *args, **kwargs): QtGui.QTreeWidget.__init__(self, *args, **kwargs) self._last_index = QtCore.QPersistentModelIndex() self.viewport().installEventFilter(self) self.setMouseTracking(True)