예제 #1
0
 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)
예제 #2
0
    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()
예제 #3
0
파일: quality.py 프로젝트: nsidere/sherloq
 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
예제 #4
0
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
예제 #5
0
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)