def slot_tableHeaderClicked(self, i): ascending = ( self.tableView.horizontalHeader().sortIndicatorSection() == i) and (self.tableView.horizontalHeader().sortIndicatorOrder() == Qt.AscendingOrder) if (ascending): self.model.sort(i, Qt.DescendingOrder) else: self.model.sort(i, Qt.AscendingOrder) print("sorting by header" + Record.getHeaders()[i])
def initUI(self): # buttons self.addRecordButton = QPushButton("Add Record") self.addRecordFromFileButton = QPushButton("Add Record From File") self.eraseAllRecordButton = QPushButton("Erase All Record") self.searchButton = QPushButton("Refresh Data") self.clearFilterButton = QPushButton("Clear") # table self.tableView = QTableView() self.model = QStandardItemModel() self.model.setHorizontalHeaderLabels(Record.getHeaders()) self.tableView.setModel(self.model) self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers) # buttons to table for column and count self.occupationButton = QPushButton("Occupation") self.addressButton = QPushButton("Adress") # layouts hbox = QHBoxLayout() hbox.addWidget(self.addRecordButton) hbox.addWidget(self.addRecordFromFileButton) hbox.addWidget(self.eraseAllRecordButton) hbox.addStretch(1) editdbGroupBox = QGroupBox("Modify DataBase") editdbGroupBox.setLayout(hbox) searchGroupBox = QGroupBox("Search") searchBox = QHBoxLayout() searchBox.addWidget(self.searchButton) searchBox.addWidget(self.clearFilterButton) searchGroupBox.setLayout(searchBox) vbox = QVBoxLayout() vbox.addWidget(editdbGroupBox) vbox.addWidget(searchGroupBox) vbox.addWidget(self.tableView) groupByBox = QGroupBox("Group By") groupByButtonsLayout = QVBoxLayout() groupByButtonsLayout.addStretch(1) groupByButtonsLayout.addWidget(self.occupationButton) groupByButtonsLayout.addWidget(self.addressButton) groupByButtonsLayout.addStretch(1) groupByBox.setLayout(groupByButtonsLayout) mainPanel = QHBoxLayout() mainPanel.addLayout(vbox) mainPanel.addWidget(groupByBox) self.setLayout(mainPanel) # signals and slots self.addRecordButton.clicked.connect(self.slot_addOneRecord) self.addRecordFromFileButton.clicked.connect( self.slot_addRecordFromFile) self.eraseAllRecordButton.clicked.connect(self.slot_eraseAllRecord) self.searchButton.clicked.connect(self.slot_showData) self.clearFilterButton.clicked.connect(self.slot_clearFilter) self.occupationButton.clicked.connect(self.slot_groupByOccupation) self.addressButton.clicked.connect(self.slot_groupByAddress) self.tableView.horizontalHeader().sectionClicked.connect( self.slot_tableHeaderClicked) # setup self.setGeometry(200, 100, 800, 600) self.setWindowTitle('Records Manager') self.show()