Nano Hash - криптовалюты, майнинг, программирование

Скрытие строк в QTableWidget, если 1 столбец не имеет значений

Я хотел получить некоторые мнения о части кода, который я написал. Мой пользовательский интерфейс состоит из QTableWidget, в котором есть 2 столбца, где один из 2 столбцов заполнен QComboBox.

Для первого столбца он заполнит ячейки списком ригов персонажей (полный путь), которые он найдет в сцене, а второй столбец создаст Qcombobox на ячейку и заполнит параметры цвета, поскольку параметр исходит из json-файл.

Прямо сейчас я пытаюсь создать несколько переключателей, которые дают пользователю возможность отображать все результаты или скрывают эти строки, если в Qcombobox для этой конкретной строки нет параметров цвета.

Как вы можете видеть в моем коде, я заполняю данные для каждого столбца, и поэтому, когда я пытался вставить if not len(new_sub_name) == 0:, в то время как он не вставляет никаких Qcombobox с нулевыми параметрами, но как мне скрыть такие строки, где есть нет вариантов в Qcombobox?

def populate_table_data(self):
    self.sub_names, self.fullpaths = get_chars_info()

    # Output Results
    # self.sub_names : ['/character/nicholas/generic', '/character/mary/default']
    # self.fullpaths : ['|Group|character|nicholas_generic_001', '|Group|character|mary_default_001']

    # Insert fullpath into column 1
    for fullpath_index, fullpath_item in enumerate(self.fullpaths):
        new_path = QtGui.QTableWidgetItem(fullpath_item)
        self.character_table.setItem(fullpath_index, 0, new_path)
        self.character_table.resizeColumnsToContents()

    # Insert colors using itempath into column 2
    for sub_index, sub_name in enumerate(self.sub_names):
        new_sub_name = read_json(sub_name)

        if not len(new_sub_name) == 0:
            self.costume_color = QtGui.QComboBox()
            self.costume_color.addItems(list(sorted(new_sub_name)))
            self.character_table.setCellWidget(sub_index, 1, self.costume_color)

Ответы:


1

Вы можете скрыть строки, используя setRowHidden. Что касается остального кода, я не вижу ничего плохого в том, что у вас сейчас есть, но FWIW я бы написал что-то вроде этого (конечно, полностью непроверенного):

def populate_table_data(self):
    self.sub_names, self.fullpaths = get_chars_info()
    items = zip(self.sub_names, self.fullpaths)
    for index, (sub_name, fullpath) in enumerate(items):
        new_path = QtGui.QTableWidgetItem(fullpath)
        self.character_table.setItem(index, 0, new_path)
        new_sub_name = read_json(sub_name)
        if len(new_sub_name):
            combo = QtGui.QComboBox()
            combo.addItems(sorted(new_sub_name))
            self.character_table.setCellWidget(index, 1, combo)
        else:
            self.character_table.setRowHidden(index, True)

    self.character_table.resizeColumnsToContents()
29.09.2016
  • Эй, спасибо, но есть идеи о том, как я заполняю свои данные? 30.09.2016
  • @диссидия. Не уверен, насколько это полезно для вас, но я немного расширил свой ответ. 30.09.2016
  • Я обязательно проверю это, забыл принести свой код домой. Но даже в этом случае, могу ли я спросить, почему (sub_name, fullpath) заключено в скобки? Я предполагаю, что это просто оптимизация и сокращение моего кода? 30.09.2016
  • @диссидия. Скобки необходимы для раскрытия кортежа. Я забыл поставить туда enumerate, так что это могло быть не очевидно. 30.09.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..