Скрыть уже выбранные значения в QComboBox QtableView с PyQt5 - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть табличное представление с виджетами 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...