# This Python file uses the following encoding: utf-8 from PySide6.QtCore import QAbstractTableModel, QModelIndex, Qt, Slot CUSTOMER_COLUMN_NAMES = \ { "userid": "Identification", "username": "Benutzername", "password": "Passwort", "enabled": "Aktiv", "roleid": "Rolle", "gecos": "Information" } CUSTOMER_COLUMN_INDEX = \ { "userid": 0, "username": 1, "password": 2, "enabled": 3, "roleid": 4, "gecos": 5 } class BusinessModel(QAbstractTableModel): __visible_index = {} __col_name = "" def __init__(self, con, cols): super().__init__() self.__con = con self.__visible_columns = cols self.__data = self.__getData() for col in cols: self.__visible_index[col] = CUSTOMER_COLUMN_INDEX[col] def __getData(self): cursor = self.__con.cursor() cursor.execute("SELECT * FROM users") self.__all_cols = [desc[0] for desc in cursor.description] #print(self.__all_cols) rows = cursor.fetchall() return rows def rowCount(self, parent= QModelIndex()): return len (self.__data) def columnCount(self, parent= QModelIndex()): return len(self.__visible_columns) def data(self, index, role= Qt.DisplayRole): if role == Qt.DisplayRole: row = self.__data[index.row()] self.__col_name = self.__visible_columns[index.column()] col_index = self.__visible_index[self.__col_name] return row[col_index] return None def headerData(self, section, orientation, role= Qt.DisplayRole): if orientation == Qt.Horizontal and role ==Qt.DisplayRole: self.__col_name = self.__visible_columns[section] return CUSTOMER_COLUMN_NAMES.get(self.__col_name, self.__col_name) return super().headerData(section, orientation, role) @Slot(dict) def setVisibleColumns(self, cols): self.__visible_columns.clear() self.__visible_index.clear() for col, val in cols.items(): self.__visible_index[val] = CUSTOMER_COLUMN_INDEX[cols[col]] self.__visible_columns.append(cols[col]) # self.headerDataChanged.emit() # self.dataChanged.emit() self.layoutChanged.emit() @Slot(int) def onRowClicked(self, row): print(row)