def _appendChildrenRowsToItem(self, item: QStandardItem, listOfDicts: List[dict], emitSignals: bool) -> bool: """Создает элементы из списка сырых словарей `listOfDicts` и добавляет их в качестве подэлементов в элемент `item`. Возвращает True - если создание и вставка завершились успешно, иначе - возвращает False. """ assert item columns = item.columnCount() if columns < 1: columns = 1 rows = [] for rawDict in listOfDicts: assert isinstance(rawDict, dict) childItem = self._createItemsTree(rawDict, columns) if childItem: rows.append(childItem) if rows: if emitSignals: parent = self._mapFromLocal( self.__localDataModel.indexFromItem(item)) first = item.rowCount() last = first + len(rows) - 1 self.beginInsertRows(parent, first, last) item.appendRows(self._sortChildrenItems(rows)) if emitSignals: self.endInsertRows() return True
def __init__(self, data): """ # -- Type -- Color |-- item_type(Fruit) | |-- name(Apple) -- color(Red) | |-- name(Banana) -- color(Yellow) |-- item_type( :param data: """ QStandardItemModel.__init__(self, 0, 2) self.setHeaderData(0, Qt.Horizontal, "Type") self.setHeaderData(1, Qt.Horizontal, "Color") for i, v in enumerate(data): item_type = data[i]['type'] row_items = list() column_items = list() for j, x in enumerate(data[i]['objects']): name, color = data[i]['objects'][j] item = QStandardItem(item_type) child = QStandardItem(name) row_items.append(child) column = QStandardItem(color) column_items.append(column) item.appendRows(row_items) item.appendColumn(column_items) self.setItem(i, 0, item)
def recursive_data_set(self, data): items = list() for d in data: item = QStandardItem(d["name"]) item.setData(d["icon"], Qt.DecorationRole) if d['objects']: item.appendRows(self.recursive_data_set(d['objects'])) items.append(item) return items
def standarditem_from_columngroup(colgroup): item = QStandardItem(colgroup.name) item.setToolTip("Split by column label: '{!s}'".format( escape(colgroup.name))) item.setFlags(item.flags() & ~Qt.ItemIsEditable) item.setData(colgroup, Qt.UserRole) children = [standarditem_from(val) for val in colgroup.values] item.appendRows(children) return item
def standarditem_from_rowgroup(rowgroup): item = QStandardItem(rowgroup.name) icon, _ = gui.attributeItem(rowgroup.var) item.setIcon(icon) item.setToolTip(variable_tooltip(rowgroup.var)) item.setData(rowgroup, Qt.UserRole) item.setFlags(item.flags() & ~Qt.ItemIsEditable) children = [standarditem_from(val) for val in rowgroup.values] item.appendRows(children) return item
def convert(self, obj): if isinstance(obj, list): ret = [] for n, sub in enumerate(obj): item = QStandardItem(str(n)) item.appendRows(self.convert(sub)) self.pack(item) ret.append(item) return ret elif isinstance(obj, dict): ret = [] for k in sorted(obj): item = QStandardItem(k) item.appendRows(self.convert(obj[k])) self.pack(item) ret.append(item) return ret return [QStandardItem(repr(obj))]
def __init__(self, data): """ # -- Type -- Color |-- item_type(Fruit) | |-- name(Apple) -- color(Red) | |-- name(Banana) -- color(Yellow) |-- item_type( :param data: """ QStandardItemModel.__init__(self, 0, 2) # 하나의 아이템만 받도록 되어 있음 self.setHeaderData(0, Qt.Horizontal, "Type") self.setHeaderData(1, Qt.Horizontal, "Color") row_items = list() column_items = list() item_type = data[0]['type'] name, color = data[0]['objects'][0] item = QStandardItem(item_type) child = QStandardItem(name) row_items.append(child) column = QStandardItem(color) column_items.append(column) name, color = data[0]['objects'][1] child = QStandardItem(name) row_items.append(child) column = QStandardItem(color) column_items.append(column) item.appendRows(row_items) item.appendColumn(column_items) self.setItem(0, 0, item)
widget = QWidget() widget.resize(200, 600) treeview = TreeView() layout = QVBoxLayout() layout.addWidget(treeview) widget.setLayout(layout) model = QStandardItemModel() model.setHorizontalHeaderLabels(['Форма']) UnitDb = dbQl("""select u.Name from Unit as u""") print(UnitDb) for UnitName in UnitDb: item_u = QStandardItem(UnitName) sqlUnitS = ('select us.Name from Unit as u, UnitSubject as us' ' WHERE 1=1' ' and u.id=us.idPodr' ' and u.name ="' + UnitName +'"') UnitSDb = dbQl(sqlUnitS) print(sqlUnitS) for UnitSName in UnitSDb: item_uu = item_u.appendRows([QStandardItem(UnitSName)]) itemroot = model.invisibleRootItem() itemroot.appendRow(item_u) treeview.setModel(model) widget.show() sys.exit(app.exec_())