def __init__(self): self.labels = columns_labels.generate(1) # Noms des colonnes self.matrix = [[Cell(0, 0)]] # Initialisation de la matrice self.matrix[0][0].name = columns_labels.getLabel(self.labels, 0) + str(1) self.columnNumber = 1 self.rowNumber = 1 self.saved = True self.title = "Nouvelle feuille"
def __init__(self, win, network): super().__init__() self.network = network self.coin = MyRect() self.delegate = MyDelegate(self) self.setItemPrototype(MyItem()) self.setItemDelegate(self.delegate) self.editorcount = 0 # Permet de savoir si l'editeur de celulles est ouvert self.delegate.editorcreated.connect(self.itemeditoropened) _translate = QtCore.QCoreApplication.translate # Activation de la détection de la souris et du filtre d'événements pour la table self.setMouseTracking(True) self.filter = EventEater(self) self.viewport().installEventFilter(self.filter) self.setFocus() self.setCurrentCell(0, 0) # On ajuste le nombre de colonnes/lignes en fonction de la taille de l'écran self.screen = QtWidgets.QDesktopWidget() self.initialRowsNumber = int(2 * self.screen.height() / CELLHEIGHT) self.initialColumnsNumber = int(2 * self.screen.width() / CELLWIDTH) self.setColumnCount(self.initialColumnsNumber) self.setRowCount(self.initialRowsNumber) self.columnsLabels = columns_labels.generate(self.columnCount()) # generation de la liste des labels (colonnes) # On attribue un identifiant à chaques colonnes for k in range(self.initialRowsNumber): item = QtWidgets.QTableWidgetItem() self.setVerticalHeaderItem(k, item) item.setText(_translate("MainWindow", str(k + 1))) # On attribue un identifiant à chaques lignes for k in range(self.initialColumnsNumber): item = QtWidgets.QTableWidgetItem() self.setHorizontalHeaderItem(k, item) item.setText(_translate("MainWindow", self.columnsLabels[k])) # On ajoute les celulles crées graphiquement au network network.addRows(self.initialRowsNumber - 1) network.addColumns(self.initialColumnsNumber - 1) # On ajoute des lignes à la fin si la barre VERTICALE de scrolling est en bas verticalscrollbar = self.verticalScrollBar() def ajoutRows(): if verticalscrollbar.value() == verticalscrollbar.maximum(): for _ in range(self.initialRowsNumber // 3): self.insertRow(self.rowCount()) network.addRow() verticalscrollbar.valueChanged.connect(ajoutRows) # On ajoute des colonnes à la fin si la barre HORIZONTALE de scrolling est en bas (il faut cette fois renommer les colonnes) horizontalscrollbar = self.horizontalScrollBar() def ajoutColumns(): if horizontalscrollbar.value() == horizontalscrollbar.maximum(): for _ in range(self.initialColumnsNumber // 3): self.insertColumn(self.columnCount()) item = QtWidgets.QTableWidgetItem() self.setHorizontalHeaderItem(self.columnCount() - 1, item) item = self.horizontalHeaderItem(self.columnCount() - 1) columns_labels.add(self.columnsLabels, 1) item.setText(_translate("MainWindow", self.columnsLabels[self.columnCount() - 1])) network.addColumn() horizontalscrollbar.valueChanged.connect(ajoutColumns)