def add_row(self, row: int, item_text: str, item_text_color: QColor = color.TABLE_CODE_TEXT_COLOR, item_background_color=color.TABLE_CODE_BACKGROUND_COLOR, header_text: str = ''): self.table_widget.setRowCount(row + 1) table_header = QTableWidgetItem(header_text) self.table_widget.setVerticalHeaderItem(row, table_header) table_item = QTableWidgetItem(item_text) table_item.setTextColor(item_text_color) table_item.setFlags(table_item.flags() ^ Qt.ItemIsEditable) table_item.setBackgroundColor(item_background_color) self.table_widget.setItem(row, 0, table_item)
def _action_open_segmentation_folder(self): """ Read nii.gz files as segmentation. Contours will be drawn if IDs align. """ fd = QFileDialog(self) reader_root_dir = fd.getExistingDirectory(self, self.tr("Open"), '${HOME}', QFileDialog.ShowDirsOnly) if not os.path.isdir(reader_root_dir): return seg_loader = ngv_io_reader_wrapper() seg_loader.configure_reader(reader_root_dir, True, dtype='uint8') self.io_seg_workers.append(seg_loader) # Add item to table row_num = self.ui.tableWidget_segmentations.rowCount() row_identifier = QTableWidgetItem(os.path.basename(reader_root_dir)) row_identifier.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) row_color_widget = QTableWidgetItem() row_color_widget.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) # TODO: Multiple color as default. idx = len(self.io_seg_workers) - 1 default_color = _cmap[idx] row_color_widget.setBackgroundColor(QColor(*default_color)) self.ui.tableWidget_segmentations.insertRow(self.ui.tableWidget_segmentations.rowCount()) self.ui.tableWidget_segmentations.setItem(row_num, 0, row_color_widget) self.ui.tableWidget_segmentations.setItem(row_num, 1, row_identifier) # Update display if len(self.ui.files_listWidget.selectedItems()) == 0: self.ui.files_listWidget.setCurrentItem(self.ui.files_listWidget.itemAt(0, 0)) else: self._update_image_data() # Allow showing segment only images self.ui.checkBox_show_slides_with_seg.setEnabled(True) self._update_file_list_view()
def create_table(matrix): table_widget = QTableWidget(DCT_SIZE, DCT_SIZE) hsv = np.array([[[0, 192, 255]]]) maximum = clip_value(np.max(matrix) - 1, minv=1) for i in range(DCT_SIZE): for j in range(DCT_SIZE): value = matrix[i, j] item = QTableWidgetItem(str(value)) item.setTextAlignment(Qt.AlignCenter) hsv[0, 0, 0] = 64 - 64 * ((value - 1) / maximum) rgb = cv.cvtColor(hsv.astype(np.uint8), cv.COLOR_HSV2RGB) item.setBackgroundColor( QColor(rgb[0, 0, 0], rgb[0, 0, 1], rgb[0, 0, 2])) table_widget.setItem(i, j, item) table_widget.resizeRowsToContents() table_widget.resizeColumnsToContents() table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers) table_widget.setSelectionMode(QAbstractItemView.SingleSelection) modify_font(table_widget, mono=True) return table_widget
def display_active_table_on_data_display(self): # class props needed data_to_display = self.data_to_display_on_tab1.copy() table_name = self.table_on_target self.ui.label_table_on_display.setText(table_name) # headers fields = self.headers_for_tab1 self.ui.tableWidget_table_display.setColumnCount(len(fields)) tableHeadersWidgets_list = list((QTableWidgetItem() for n in fields)) for index, field in enumerate(fields): tableHeadersWidgets_list[index].setText(field) self.ui.tableWidget_table_display.setHorizontalHeaderItem( index, tableHeadersWidgets_list[index]) # table build process self.ui.tableWidget_table_display.setRowCount(0) for i_row, row in enumerate(data_to_display): self.ui.tableWidget_table_display.insertRow(i_row) for i_col, item_data in enumerate(row): item__ = QTableWidgetItem(str(item_data)) if i_row % 2 == 0: item__.setBackgroundColor(QColor(220, 230, 255)) try: negative_value = item_data < 0 if negative_value: item__.setBackgroundColor(QColor(120, 0, 0)) item__.setTextColor(QColor(255, 255, 255)) item__.setFont(QFont(weight=5)) except: pass finally: item__.setText( get_format_of_field( table_name, self.ui.tableWidget_table_display.horizontalHeaderItem( i_col).text())(item_data)) self.ui.tableWidget_table_display.setItem(i_row, i_col, item__) # print('debug: table {} displayed...'.format(table_name)) return
class MainTable(QTableWidget): def __init__(self): super().__init__() self.initTable() def initTable(self): #Формирование базовой таблицы self.header = [ 'Составляющие затрат', 'Номер расценки', 'Единица измерения', 'Базовая величина затрат, тыс.руб./ед.изм.', 'Количество ед.', 'Коэффициент приведения затрат к уровню цен субъекта', 'Базовые затраты в уровнях цен субъекта РФ, тыс.руб.', 'Текущие затраты в уровнях цен субъекта РФ, тыс.руб.', 'Del' ] self.setColumnCount(9) self.setRowCount(1) for i in range(0, len(self.header)): self.setHorizontalHeaderItem(i, QTableWidgetItem(self.header[i])) stylesheet = "::section{Background-color:rgb(176,224,230);border-radius:2px;}" self.horizontalHeader().setStyleSheet(stylesheet) self.resizeColumnsToContents() #Формирование сигналов self.cellClicked.connect(self.deleteClicked) #Добавление строк по клику def update_table(self, items): self.make_closebutton() text = self.make_numbertext(items) self.row = self.rowCount() - 1 self.setItem(self.row, 3, QTableWidgetItem(items[0])) self.setItem(self.row, 4, QTableWidgetItem(items[3])) self.setItem(self.row, 5, QTableWidgetItem( items[4])) #Добавить критерии выбора региональных коэффициентов self.setItem(self.row, 6, QTableWidgetItem(self.calculate(items)[0])) self.setItem(self.row, 7, QTableWidgetItem(self.calculate(items)[1])) self.setItem(self.row, 1, QTableWidgetItem(text)) self.setItem(self.row, 8, self.closebut) self.insertRow(self.row + 1) #Пересчет при изменении значений def recalculation(self, data): for i in range(len(data[0])): cost = float(data[0][i]) count = float(data[1][i]) koef = float(data[2][i]) calc = str(round(cost * count * koef, 1)) self.setItem(i, 6, QTableWidgetItem(calc.replace('.', ','))) self.setItem( i, 7, QTableWidgetItem( str(round(float(calc) * 1.2, 1)).replace('.', ','))) #Удаление строки def deleteClicked(self, row, col): if col == 8: self.removeRow(row) self.row += 1 #Текст для категории def make_numbertext(self, items): if len(items[2]) > 5: return items[2][:5] + '-' + items[1] else: return items[2] #Расчет стоимости def calculate(self, items): cost = float(items[0].replace(',', '.')) count = float(items[3].replace(',', '.')) k = float(items[4].replace(',', '.')) current_cost = str(round(cost * count * k, 11)) future_cost = str(round(float(current_cost) * 1.2, 1)) return [current_cost.replace('.', ','), future_cost.replace('.', ',')] #Рисует крестик для удаления строки def make_closebutton(self): self.closebut = QTableWidgetItem('X') self.closebut.setBackgroundColor(QColor(240, 240, 240)) self.closebut.setFont(QFont('Helvetica [Cronyx]', 18, QFont.ExtraBold)) self.closebut.setTextColor(QColor(255, 11, 21)) self.closebut.setTextAlignment(4)