def __init__(self, rows, cols, parent): super(myTable, self).__init__(rows, cols, parent) self.num_col = cols self.num_row = rows self.setupHeader(cols) # ヘッダーのアルファベット設定 self.setItemPrototype(self.item(rows - 1, cols - 1)) # テーブルアイテムの初期化 self.setItemDelegate(SpreadSheetDelegate(self)) # デリゲート self.initContents() self.setupContents() self.clipTable = QTableWidget(rows, cols, None) # コピー,カットのための仮装テーブル self.clipRanges = QTableWidgetSelectionRange() # コピー,カットしたセルの領域情報 self.verticalHeader().setDefaultSectionSize(60) self.horizontalHeader().setDefaultSectionSize(120)
def on_select_open_orders_table(self, row, column): column_count = self.table_order_history.columnCount() - 1 selection_range = QTableWidgetSelectionRange(row, 0, row, column_count) self.table_open_orders.setRangeSelected(selection_range, True) item_name_column = 0 item_name_item = self.table_open_orders.item(row, item_name_column) item_name = item_name_item.text() index = self.cbb_item_name.findText(item_name) self.cbb_item_name.setCurrentIndex(index) open_amount_column = 4 open_amount_item = self.table_open_orders.item(row, open_amount_column) open_amount = self.process_type(open_amount_item.text()) self.sb_amount.setValue(open_amount) order_number_column = 5 order_number_item = self.table_open_orders.item( row, order_number_column) order_number = order_number_item.text() self.le_order_number.setText(order_number) order_price_column = 7 order_price_item = self.table_open_orders.item(row, order_price_column) order_price = self.process_type(order_price_item.text()) self.sb_price.setValue(order_price) order_position_column = 9 order_position_item = self.table_open_orders.item( row, order_position_column) order_position = order_position_item.text() if order_position == PURCHASE[-2:]: self.cbb_order_position.setCurrentText('CANCEL BUY') elif order_position == SELL[-2:]: self.cbb_order_position.setCurrentText('CANCEL SELL')
def actTbUnselectionClicked(self): self.twReportList.setFocus() selectedCount = self.twReportList.rowCount() qtwsr = QTableWidgetSelectionRange(0, 0, selectedCount - 1, self.twReportList.columnCount() - 1) self.twReportList.setRangeSelected(qtwsr, False) self.mainWin.statusMsg('您选中了{0}行'.format(0))
def on_select_portfolio_table(self, row, column): column_count = self.table_portfolio.columnCount() - 1 selection_range = QTableWidgetSelectionRange(row, 0, row, column_count) self.table_portfolio.setRangeSelected(selection_range, True) item_name_column = 0 item_name_item = self.table_portfolio.item(row, item_name_column) item_name = item_name_item.text() if item_name[:2] == 'F ': item_name = item_name[:8] index = self.cbb_item_name.findText(item_name) self.cbb_item_name.setCurrentIndex(index) current_price_column = 1 current_price_item = self.table_portfolio.item(row, current_price_column) current_price = self.process_type(current_price_item.text()) self.sb_price.setValue(current_price) holding_amount_column = 3 holding_amount_item = self.table_portfolio.item( row, holding_amount_column) holding_amount = self.process_type(holding_amount_item.text()) self.sb_amount.setValue(abs(holding_amount)) self.cbb_order_type.setCurrentText('MARKET') if holding_amount > 0: self.cbb_order_position.setCurrentText('SELL') else: self.cbb_order_position.setCurrentText('BUY')
def add_folder(self, folder_name, uuid, is_synced, is_confined, selected=False): if is_confined and not self.config.gui_show_confined: return row_idx = self.rowCount() self.insertRow(row_idx) item = FolderTableItem(is_synced, is_confined) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.ICON, item) item = CustomTableItem(folder_name) item.setData(NAME_DATA_INDEX, folder_name) item.setToolTip("\n".join(folder_name[i : i + 64] for i in range(0, len(folder_name), 64))) item.setData(TYPE_DATA_INDEX, FileType.Folder) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.NAME, item) item = CustomTableItem() item.setData(NAME_DATA_INDEX, pendulum.datetime(1970, 1, 1)) item.setData(TYPE_DATA_INDEX, FileType.Folder) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.CREATED, item) item = CustomTableItem() item.setData(NAME_DATA_INDEX, pendulum.datetime(1970, 1, 1)) item.setData(TYPE_DATA_INDEX, FileType.Folder) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.UPDATED, item) item = CustomTableItem() item.setData(NAME_DATA_INDEX, -1) item.setData(TYPE_DATA_INDEX, FileType.Folder) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.SIZE, item) if selected: self.setRangeSelected( QTableWidgetSelectionRange(row_idx, 0, row_idx, len(Column) - 1), True )
def highlight(self, cells: List[Tuple[int, int]]) -> None: if len(cells) == 0: return self.__widget.selectionModel().clearSelection() minRow: int = self.__widget.rowCount() + 1 minColumn: int = self.__widget.columnCount() + 1 maxRow: int = -1 maxColumn: int = -1 for cell in cells: if cell[0] < minRow: minRow = cell[0] if cell[0] > maxRow: maxRow = cell[0] if cell[1] < minColumn: minColumn = cell[1] if cell[1] > maxColumn: maxColumn = cell[1] selectionRange: QTableWidgetSelectionRange = QTableWidgetSelectionRange( minRow, minColumn, maxRow, maxColumn) self.__widget.setRangeSelected(selectionRange, True) self.__widget.repaint(0, 0, self.__widget.width(), self.__widget.height())
def on_select_algorithm_trading_table(self, row, column): column_count = self.table_algorithm_trading.columnCount() - 1 selection_range = QTableWidgetSelectionRange(row, 0, row, column_count) self.table_algorithm_trading.setRangeSelected(selection_range, True) item_name_column = 0 item_name_item = self.table_algorithm_trading.item( row, item_name_column) item_name = item_name_item.text() index = self.cbb_item_name.findText(item_name) self.cbb_item_name.setCurrentIndex(index) order_number_column = 3 order_number_item = self.table_algorithm_trading.item( row, order_number_column) order_number = order_number_item.text() self.le_order_number.setText(order_number) order_price_column = 6 order_price_item = self.table_algorithm_trading.item( row, order_price_column) order_price = self.process_type(order_price_item.text()) if order_price: self.sb_price.setValue(order_price) open_amount_column = 10 open_amount_item = self.table_algorithm_trading.item( row, open_amount_column) open_amount = self.process_type(open_amount_item.text()) self.sb_amount.setValue(open_amount)
def actTbSelectionClicked(self): self.twNewaimProductCategoryList.setFocus() selectedCount = self.twNewaimProductCategoryList.rowCount() qtwsr = QTableWidgetSelectionRange( 0, 0, selectedCount - 1, self.twNewaimProductCategoryList.columnCount() - 1) self.twNewaimProductCategoryList.setRangeSelected(qtwsr, True) self.mainWin.statusMsg('您选中了{0}行'.format(selectedCount))
def actTbSelectionClicked(self): self.twAmazonKeyword.setFocus() selectedCount = self.twAmazonKeyword.rowCount() qtwsr = QTableWidgetSelectionRange( 0, 0, selectedCount - 1, self.twAmazonKeyword.columnCount() - 1) self.twAmazonKeyword.setRangeSelected(qtwsr, True) self.mainWin.statusMsg('您选中了{0}行'.format(selectedCount))
def _selectAllFeatures(self): """ Selects all features without modifying the 2d/3d switches """ # top (1st row 2d/3d, 2nd row sigma value), left, bottom, right selection_range = QTableWidgetSelectionRange(2, 0, self.rowCount() - 1, self.columnCount() - 2) self.setRangeSelected(selection_range, True)
def goToPosition(self): self.tableWidget.clearSelection() position = self.goTo.text() lenght = len(position) if lenght > 3: position_Row = position[:3] position_Column = position[3:] position_Row = int(position_Row, 16) position_Column = int(position_Column, 16) positionCell = self.tableWidget.item(position_Row, position_Column) self.tableWidget.scrollToItem(positionCell) self.tableWidget.setRangeSelected(QTableWidgetSelectionRange(positionCell.row(), positionCell.column(), positionCell.row(), positionCell.column()), True) elif lenght > 0: position_Row = position position_Row = int(position_Row, 16) position_Column = 0 positionCell = self.tableWidget.item(position_Row, position_Column) self.tableWidget.scrollToItem(positionCell) self.tableWidget.setRangeSelected(QTableWidgetSelectionRange(positionCell.row(), positionCell.column(), positionCell.row(), positionCell.column()), True)
def on_changed(self): print("on_changed") # Handles initial click and drag. Sets the entire row for r in self.tableWidget.selectedRanges(): self.tableWidget.setRangeSelected( QTableWidgetSelectionRange(r.topRow(), 0, r.bottomRow(), self.tableWidget.columnCount() - 1), True) for row in range(r.topRow(), r.bottomRow() + 1): item = self.tableWidget.item(row, 0) if item and self.newState != None: item.setCheckState(self.newState)
def add_musics(self): self.files = QFileDialog.getOpenFileNames(self, "选择音乐文件", self.downloadDir, self.tr("*.mp3"))[0] if not self.files: return self.exec_add_operation(self.files) self.musics_added_signal.emit(True) for item in self.files: row = self.playlist.get_item_index(item) self.setRangeSelected( QTableWidgetSelectionRange(row, 0, row, self.columnCount() - 1), True)
def on_select_balance_table(self, row, column): column_count = self.table_balance.columnCount() - 1 selection_range = QTableWidgetSelectionRange(row, 0, row, column_count) self.table_balance.setRangeSelected(selection_range, True) item_name_column = 0 item_name_item = self.table_balance.item(row, item_name_column) item_name = item_name_item.text() index = self.cbb_item_name.findText(item_name) self.cbb_item_name.setCurrentIndex(index) current_price_column = 1 current_price_item = self.table_balance.item(row, current_price_column) current_price = self.process_type(current_price_item.text()) self.sb_price.setValue(current_price)
def actTbInvertSelectionClicked(self): self.twAmazonKeyword.setFocus() row_num = self.twAmazonKeyword.rowCount() column_num = self.twAmazonKeyword.columnCount() - 1 selectedCount = 0 if (row_num > 0): listRows = set(self.gettwAmazonKeywordSelectionChangedRowsNum()) for i in range(row_num): qtwsr = QTableWidgetSelectionRange(i, 0, i, column_num) if (i in listRows): self.twAmazonKeyword.setRangeSelected(qtwsr, False) else: self.twAmazonKeyword.setRangeSelected(qtwsr, True) selectedCount += 1 self.mainWin.statusMsg('您选中了{0}行'.format(selectedCount))
def add_file( self, file_name, entry_id, file_size, created_on, updated_on, is_synced, is_confined, selected=False, ): if is_confined and not self.config.gui_show_confined: return entry_id = entry_id.hex row_idx = self.rowCount() self.insertRow(row_idx) item = FileTableItem(is_synced, is_confined, file_name.str) item.setData(NAME_DATA_INDEX, 1) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(ENTRY_ID_DATA_INDEX, entry_id) self.setItem(row_idx, Column.ICON, item) item = CustomTableItem(file_name.str) item.setToolTip("\n".join(file_name.str[i:i + 64] for i in range(0, len(file_name.str), 64))) item.setData(NAME_DATA_INDEX, file_name.str) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(ENTRY_ID_DATA_INDEX, entry_id) self.setItem(row_idx, Column.NAME, item) item = CustomTableItem(format_datetime(created_on)) item.setData(NAME_DATA_INDEX, created_on) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(ENTRY_ID_DATA_INDEX, entry_id) self.setItem(row_idx, Column.CREATED, item) item = CustomTableItem(format_datetime(updated_on)) item.setData(NAME_DATA_INDEX, updated_on) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(ENTRY_ID_DATA_INDEX, entry_id) self.setItem(row_idx, Column.UPDATED, item) item = CustomTableItem(get_filesize(file_size)) item.setData(NAME_DATA_INDEX, file_size) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(ENTRY_ID_DATA_INDEX, entry_id) self.setItem(row_idx, Column.SIZE, item) if selected: self.setRangeSelected( QTableWidgetSelectionRange(row_idx, 0, row_idx, len(Column) - 1), True)
def change_date(self, select_date): a = -1 b = -1 self.tableWidget.clearSelection() for row in range(self.tableWidget.rowCount()): date_item = self.tableWidget.item(row, 3) if select_date.toString(Qt.ISODate) == date_item.text(): if a == -1: a = row b = row - 1 b += 1 if a != -1 and b != -1: self.tableWidget.setRangeSelected( QTableWidgetSelectionRange(a, 0, b, 3), True) self.tabWidget.setCurrentIndex(1)
def table_selectionChanged(self): if self.__table_selection_being_updated is True: return rows_to_select = set() for next_item in self.__dashboardUi.tableWidget.selectedItems(): rows_to_select.add(next_item.row()) self.__table_selection_being_updated = True self.__dashboardUi.tableWidget.clearSelection() for i in rows_to_select: self.__dashboardUi.tableWidget.setRangeSelected( QTableWidgetSelectionRange(i, self.__ID_COL, i, self.__NAME_COL), True) self.__table_selection_being_updated = False
def on_down(self): table: QTableWidget = self.colorTable selected = table.selectedIndexes() if selected: rows = [index.row() for index in selected] next_row = table.rowCount() - 1 for row in sorted(rows, reverse=True): if row < next_row: SettingsWindow._swap_items(table, row, 0, row + 1, 0) else: next_row -= 1 table.clearSelection() table.setRangeSelected( QTableWidgetSelectionRange(min(rows) + 1, 0, max(rows) + 1, 0), True)
def on_up(self): table: QTableWidget = self.colorTable selected = table.selectedIndexes() if selected: rows = [index.row() for index in selected] prev_row = 0 for row in sorted(rows): if row > prev_row: SettingsWindow._swap_items(table, row, 0, row - 1, 0) else: prev_row += 1 table.clearSelection() table.setRangeSelected( QTableWidgetSelectionRange(min(rows) - 1, 0, max(rows) - 1, 0), True)
def add_file(self, file_name, uuid, file_size, created_on, updated_on, is_synced, selected=False): row_idx = self.rowCount() self.insertRow(row_idx) item = FileTableItem(is_synced, file_name) item.setData(NAME_DATA_INDEX, 1) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.ICON, item) item = CustomTableItem(file_name) item.setToolTip("\n".join(file_name[i:i + 64] for i in range(0, len(file_name), 64))) item.setData(NAME_DATA_INDEX, file_name) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.NAME, item) item = CustomTableItem(format_datetime(created_on)) item.setData(NAME_DATA_INDEX, created_on) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.CREATED, item) item = CustomTableItem(format_datetime(updated_on)) item.setData(NAME_DATA_INDEX, updated_on) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.UPDATED, item) item = CustomTableItem(get_filesize(file_size)) item.setData(NAME_DATA_INDEX, file_size) item.setData(TYPE_DATA_INDEX, FileType.File) item.setData(UUID_DATA_INDEX, uuid) self.setItem(row_idx, Column.SIZE, item) if selected: self.setRangeSelected( QTableWidgetSelectionRange(row_idx, 0, row_idx, len(Column) - 1), True)
def SaveBlock(self): # Обновить текущий блок print("Save ", hex(self.Address), " to ", self.FileName) a = array.array('B') # массив из байтов (unsigned char) for row in range(0, 16): for col in range(0, 16): s = self.tableWidget.item(row, col).text() if s != "-": # print(s) try: b1 = int(s, 16) if (b1 < 0) or (b1 > 255): b1 = 1 / 0 except: # Вывести на консоль print("ERROR!!", row, " ", col) # позиционировать в таблице self.tableWidget.clearSelection() Range = QTableWidgetSelectionRange(row, col, row, col) self.tableWidget.setRangeSelected(Range, True) # Вывести на GUI mb = QMessageBox() mb.setIcon(QMessageBox.Information) mb.setWindowTitle('Error') mb.setText('Не байт в строке ' + str(row) + ' столбце ' + str(col)) mb.setStandardButtons(QMessageBox.Ok) mb.exec() return a.append(b1) f = open(self.FileName, 'r+b') f.seek(self.Address) f.write(a) f.close() self.ShowBlock() return
def select_none_rows(self): self.setRangeSelected( QTableWidgetSelectionRange(0, 0, self.rowCount() - 1, self.columnCount() - 1), False)
def select_all_rows(self): self.setRangeSelected( QTableWidgetSelectionRange(0, 0, self.rowCount() - 1, self.columnCount() - 1), True)
def select_a_row(self, row, flag=True): self.setRangeSelected( QTableWidgetSelectionRange(row, 0, row, self.columnCount() - 1), flag)
def deletealarm(self,_): self.aw.qmc.alarmtablecolumnwidths = [self.alarmtable.columnWidth(c) for c in range(self.alarmtable.columnCount())] self.alarmtable.setSortingEnabled(False) nalarms = self.alarmtable.rowCount() if nalarms: # check for selection selected = self.alarmtable.selectedRanges() if selected and len(selected) > 0: selected_row = selected[0].topRow() selected_row = int(self.alarmtable.item(selected_row,0).text()) -1 # we derref the rows number that might be different per sorting order self.alarmtable.removeRow(selected_row) self.aw.qmc.alarmflag = self.aw.qmc.alarmflag[0:selected_row] + self.aw.qmc.alarmflag[selected_row + 1:] self.aw.qmc.alarmguard = self.aw.qmc.alarmguard[0:selected_row] + self.aw.qmc.alarmguard[selected_row + 1:] self.aw.qmc.alarmnegguard = self.aw.qmc.alarmnegguard[0:selected_row] + self.aw.qmc.alarmnegguard[selected_row + 1:] self.aw.qmc.alarmtime = self.aw.qmc.alarmtime[0:selected_row] + self.aw.qmc.alarmtime[selected_row + 1:] self.aw.qmc.alarmoffset = self.aw.qmc.alarmoffset[0:selected_row] + self.aw.qmc.alarmoffset[selected_row + 1:] self.aw.qmc.alarmcond = self.aw.qmc.alarmcond[0:selected_row] + self.aw.qmc.alarmcond[selected_row + 1:] self.aw.qmc.alarmstate = self.aw.qmc.alarmstate[0:selected_row] + self.aw.qmc.alarmstate[selected_row + 1:] self.aw.qmc.alarmsource = self.aw.qmc.alarmsource[0:selected_row] + self.aw.qmc.alarmsource[selected_row + 1:] self.aw.qmc.alarmtemperature = self.aw.qmc.alarmtemperature[0:selected_row] + self.aw.qmc.alarmtemperature[selected_row + 1:] self.aw.qmc.alarmaction = self.aw.qmc.alarmaction[0:selected_row] + self.aw.qmc.alarmaction[selected_row + 1:] self.aw.qmc.alarmbeep = self.aw.qmc.alarmbeep[0:selected_row] + self.aw.qmc.alarmbeep[selected_row + 1:] self.aw.qmc.alarmstrings = self.aw.qmc.alarmstrings[0:selected_row] + self.aw.qmc.alarmstrings[selected_row + 1:] self.alarmtable.setRowCount(nalarms - 1) self.deselectAll() # select row number that was just deleted self.alarmtable.setRangeSelected(QTableWidgetSelectionRange(selected_row,0,selected_row,self.alarmtable.columnCount()-1),True) self.alarmtable.sortItems(0) self.alarmtable.sortItems(0, Qt.AscendingOrder) # we first have to sort the table according to the row numbers # renumber elements self.renumberRows() # we correct the IfAlarm and ButNot references to items after the deleted one for i in range(self.alarmtable.rowCount()): guard = self.alarmtable.cellWidget(i,2) try: guard_value = int(str(guard.text())) - 1 except Exception: guard_value = -1 if guard_value >= selected_row: guard.setText(str(guard_value)) nguard = self.alarmtable.cellWidget(i,3) try: nguard_value = int(str(nguard.text())) - 1 except Exception: nguard_value = -1 if nguard_value >= selected_row: nguard.setText(str(nguard_value)) else: self.alarmtable.removeRow(self.alarmtable.rowCount() - 1) # nothing selected, we pop the last element self.aw.qmc.alarmflag.pop() self.aw.qmc.alarmguard.pop() self.aw.qmc.alarmnegguard.pop() self.aw.qmc.alarmtime.pop() self.aw.qmc.alarmoffset.pop() self.aw.qmc.alarmcond.pop() self.aw.qmc.alarmstate.pop() self.aw.qmc.alarmsource.pop() self.aw.qmc.alarmtemperature.pop() self.aw.qmc.alarmaction.pop() self.aw.qmc.alarmbeep.pop() self.aw.qmc.alarmstrings.pop() self.alarmtable.setRowCount(nalarms - 1) self.deselectAll() self.alarmtable.sortItems(0) self.markNotEnabledAlarmRows() self.alarmtable.setSortingEnabled(True)
def insertalarm(self,_): self.alarmtable.setSortingEnabled(False) nalarms = self.alarmtable.rowCount() if nalarms: alarm_flag = 1 alarm_guard = -1 alarm_negguard = -1 alarm_time = -1 alarm_offset = 0 alarm_cond = 1 alarm_state = 0 alarm_source = 1 alarm_temperature = 500. alarm_action = 0 alarm_beep = 0 alarm_string = QApplication.translate("Label","Enter description",None) # check for selection selected = self.alarmtable.selectedRanges() if selected and len(selected) > 0: self.savealarms() # we first "save" the alarmtable to be able to pick up the values of the selected row selected_row = selected[0].topRow() selected_row = int(self.alarmtable.item(selected_row,0).text()) -1 # we derref the rows number that might be different per sorting order try: alarm_flag = self.aw.qmc.alarmflag[selected_row] alarm_guard = self.aw.qmc.alarmguard[selected_row] alarm_negguard = self.aw.qmc.alarmnegguard[selected_row] alarm_time = self.aw.qmc.alarmtime[selected_row] alarm_offset = self.aw.qmc.alarmoffset[selected_row] alarm_cond = self.aw.qmc.alarmcond[selected_row] alarm_state = self.aw.qmc.alarmstate[selected_row] alarm_source = self.aw.qmc.alarmsource[selected_row] alarm_temperature = self.aw.qmc.alarmtemperature[selected_row] alarm_action = self.aw.qmc.alarmaction[selected_row] alarm_beep = self.aw.qmc.alarmbeep[selected_row] alarm_string= self.aw.qmc.alarmstrings[selected_row] except: pass self.aw.qmc.alarmflag.insert(selected_row,alarm_flag) self.aw.qmc.alarmguard.insert(selected_row,alarm_guard) self.aw.qmc.alarmnegguard.insert(selected_row,alarm_negguard) self.aw.qmc.alarmtime.insert(selected_row,alarm_time) self.aw.qmc.alarmoffset.insert(selected_row,alarm_offset) self.aw.qmc.alarmcond.insert(selected_row,alarm_cond) self.aw.qmc.alarmstate.insert(selected_row,alarm_state) self.aw.qmc.alarmsource.insert(selected_row,alarm_source) self.aw.qmc.alarmtemperature.insert(selected_row,alarm_temperature) self.aw.qmc.alarmaction.insert(selected_row,alarm_action) self.aw.qmc.alarmbeep.insert(selected_row,alarm_beep) self.aw.qmc.alarmstrings.insert(selected_row,alarm_string) self.alarmtable.insertRow(selected_row) self.setalarmtablerow(selected_row) # self.alarmtable.resizeColumnsToContents() # # improve width of Qlineedit columns # self.alarmtable.setColumnWidth(2,50) # self.alarmtable.setColumnWidth(3,50) # self.alarmtable.setColumnWidth(5,50) # self.alarmtable.setColumnWidth(6,80) # self.alarmtable.setColumnWidth(8,40) header = self.alarmtable.horizontalHeader() header.setStretchLastSection(False) self.deselectAll() # select newly inserted item self.alarmtable.setRangeSelected(QTableWidgetSelectionRange(selected_row,0,selected_row,self.alarmtable.columnCount()-1),True) header.setStretchLastSection(True) self.markNotEnabledAlarmRows() self.alarmtable.sortItems(0, Qt.AscendingOrder) # we first have to sort the table according to the row numbers # we no re-number rows self.renumberRows() # we correct the IfAlarm and ButNot references to items after the inserted one for i in range(self.alarmtable.rowCount()): guard = self.alarmtable.cellWidget(i,2) try: guard_value = int(str(guard.text())) - 1 except Exception: guard_value = -1 if guard_value >= selected_row: guard.setText(str(guard_value+2)) nguard = self.alarmtable.cellWidget(i,3) try: nguard_value = int(str(nguard.text())) - 1 except Exception: nguard_value = -1 if nguard_value >= selected_row: nguard.setText(str(nguard_value+2)) self.alarmtable.setSortingEnabled(True)
def addalarm(self,_): alarm_flag = 1 alarm_guard = -1 alarm_negguard = -1 alarm_time = -1 alarm_offset = 0 alarm_cond = 1 alarm_state = -1 alarm_source = 1 alarm_temperature = 500. alarm_action = 0 alarm_beep = 0 alarm_string = QApplication.translate("Label","Enter description",None) selected = self.alarmtable.selectedRanges() if len(selected) > 0: self.savealarms() # we first "save" the alarmtable to be able to pick up the values of the selected row selected_idx = selected[0].topRow() selected_idx = int(self.alarmtable.item(selected_idx,0).text()) -1 # we derref the rows number that might be different per sorting order try: alarm_flag = self.aw.qmc.alarmflag[selected_idx] alarm_guard = self.aw.qmc.alarmguard[selected_idx] alarm_negguard = self.aw.qmc.alarmnegguard[selected_idx] alarm_time = self.aw.qmc.alarmtime[selected_idx] alarm_offset = self.aw.qmc.alarmoffset[selected_idx] alarm_cond = self.aw.qmc.alarmcond[selected_idx] alarm_state = self.aw.qmc.alarmstate[selected_idx] alarm_source = self.aw.qmc.alarmsource[selected_idx] alarm_temperature = self.aw.qmc.alarmtemperature[selected_idx] alarm_action = self.aw.qmc.alarmaction[selected_idx] alarm_beep = self.aw.qmc.alarmbeep[selected_idx] alarm_string= self.aw.qmc.alarmstrings[selected_idx] except: pass self.aw.qmc.alarmflag.append(alarm_flag) self.aw.qmc.alarmguard.append(alarm_guard) self.aw.qmc.alarmnegguard.append(alarm_negguard) self.aw.qmc.alarmtime.append(alarm_time) self.aw.qmc.alarmoffset.append(alarm_offset) self.aw.qmc.alarmcond.append(alarm_cond) self.aw.qmc.alarmstate.append(alarm_state) self.aw.qmc.alarmsource.append(alarm_source) self.aw.qmc.alarmtemperature.append(alarm_temperature) self.aw.qmc.alarmaction.append(alarm_action) self.aw.qmc.alarmbeep.append(alarm_beep) self.aw.qmc.alarmstrings.append(alarm_string) self.alarmtable.setSortingEnabled(False) nalarms = self.alarmtable.rowCount() self.alarmtable.setRowCount(nalarms + 1) self.setalarmtablerow(nalarms) header = self.alarmtable.horizontalHeader() header.setStretchLastSection(True) if len(self.aw.qmc.alarmflag) == 1: # only for the first entry we apply some default column width # improve width of Qlineedit columns self.alarmtable.resizeColumnsToContents() self.alarmtable.setColumnWidth(1,50) self.alarmtable.setColumnWidth(2,50) self.alarmtable.setColumnWidth(3,50) self.alarmtable.setColumnWidth(4,90) self.alarmtable.setColumnWidth(5,50) self.alarmtable.setColumnWidth(6,70) self.alarmtable.setColumnWidth(7,90) self.alarmtable.setColumnWidth(8,50) self.alarmtable.setColumnWidth(9,90) # remember the columnwidth for i in range(len(self.aw.qmc.alarmtablecolumnwidths)): try: self.alarmtable.setColumnWidth(i,self.aw.qmc.alarmtablecolumnwidths[i]) except: pass self.alarmtable.setSortingEnabled(True) else: self.deselectAll() # select newly added row i.e. the last one self.alarmtable.setRangeSelected(QTableWidgetSelectionRange(nalarms,0,nalarms,self.alarmtable.columnCount()-1),True) header.setStretchLastSection(True) self.markNotEnabledAlarmRows() self.alarmtable.setSortingEnabled(True)
def relics_cancelall(self): self.ui.curr_relics_list.setRangeSelected( QTableWidgetSelectionRange(0, 0, len_relics - 1, 3), False)
def deselect(self): self.tableWidget.setRangeSelected( QTableWidgetSelectionRange(0, 0, self.row - 1, self.col - 1), False)