У меня есть табличное представление с виджетами QComboBox. Все QComboBox имеют одинаковые начальные значения, но как только выбрано одно значение, оно должно быть удалено из остальной части QComboBox в таблице. Возможно ли это?
У меня есть сигнал, что при изменении текста в QComboBox сохраняется набор используемых букв. Итак, мне нужно удалить это письмо из остальной части QComboBox в табличном представлении.
Мой код ниже:
from PyQt5.QtWidgets import QWidget, QComboBox
from PyQt5.QtGui import QStandardItemModel, QStandardItem
class widgetTabContent(QWidget, Ui_widgetTabContent):
def __init__(self, parent=None):
super(widgetTabContent, self).__init__(parent)
self.setupUi(self)
self.QSModel = QStandardItemModel()
self.tvColumns.setModel(self.QSModel)
self.letters = []
self.cb_letters_used = set()
self.fill_table()
def combobox_current_text_changed(self, text):
print(text)
if text:
self.cb_letters_used.add(text)
print(self.cb_letters_used)
# Commented this code as it becomes logically recursive
# self.cb_update_list = [letter for letter in self.letters
# if letter not in self.cb_letters_used]
# for row in range(self.QSModel.rowCount()):
# self.tvColumns.indexWidget(self.tvColumns.model().index(row, 0)).clear()
# self.tvColumns.indexWidget(self.tvColumns.model().index(row, 0)).addItems(self.cb_update_list)
def fill_table(self):
self.letters = ['A','B','C','D','E','F','G']
self.QSModel.setColumnCount(1)
for row in range(len(self.col_letters)):
combobox = QComboBox()
combobox.add_items(self.col_letters)
combobox.currentTextChanged.connect(self.combobox_current_text_changed)
self.QSModel.insertRow(row)
self.tvColumns.setIndexWidget(self.tvColumns.model().index(row, 0), combobox)