Скрытие строк в 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()