Как добавить QComboBox в первую строку QAbstractTable?

Я хотел бы добавить QComboBox с входными данными (Id, Name, Year) в первую строку QAbstractTableModel? Я пробовал аналогичные сообщения Как установить данные в QComboBox с помощью QAbstractTableModel (Модель/представление)? и Как добавить Select one... в QComboBox при использовании QAbstractTableModel (Model/View)?. Однако не получилось (приложение постоянно вылетает). Как я могу изменить свой существующий код? Я новичок в PyQT, любая помощь высоко ценится. Большое спасибо!

Мой код

class PandasModel(QtCore.QAbstractTableModel):

    def __init__(self, df = pd.DataFrame(), parent=None):

        QtCore.QAbstractTableModel.__init__(self, parent=parent)
        self._df = df
        row_count = 700
        column_count = 700

    def rowCount(self, parent=QtCore.QModelIndex()):
        return len(self._df.index)

    def columnCount(self, parent=QtCore.QModelIndex()):
        return len(self._df.columns)


    def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
        if role != QtCore.Qt.DisplayRole:
            return QtCore.QVariant()

        if orientation == QtCore.Qt.Horizontal:
            try:
                return self._df.columns.tolist()[section]
            except (IndexError, ):
                return QtCore.QVariant()
        elif orientation == QtCore.Qt.Vertical:
            try:
                # return self.df.index.tolist()
                return self._df.index.tolist()[section]
            except (IndexError, ):
                return QtCore.QVariant()


    def data(self, index, role=QtCore.Qt.DisplayRole):
        if role != QtCore.Qt.DisplayRole:
            return QtCore.QVariant()

        if not index.isValid():
            return QtCore.QVariant()

        return QtCore.QVariant(str(self._df.iloc[index.row(), index.column()]))

person Aslan Aliyev    schedule 03.05.2021    source источник
comment
Боюсь, вы немного запутались. Модель — это структура данных, к ней нельзя добавить виджет, так как виджет — это визуальный элемент (часть пользовательского интерфейса, поэтому не модель). Что вы хотите сделать, так это показать поле со списком в представлении (возможно, QTableView). Я настоятельно рекомендую вам ознакомиться с документацией по модели/представлению Qt и руководство.   -  person musicamante    schedule 03.05.2021
comment
@musicamante У меня есть пустой фрейм, в котором я нажимаю загрузить данные CSV. Вы имеете в виду, что QComboBox должен появиться с самого начала в этом кадре?   -  person Aslan Aliyev    schedule 03.05.2021
comment
Я верю, что вы все еще не понимаете. QComboBox — это элемент пользовательского интерфейса, он не имеет ничего общего с моделью: это то, что в конечном итоге будет отображаться в представлении. Если модель пустая и вы хотите показать комбо в первой строке, то, в первую очередь, в модель нужно добавить хотя бы одну строку. Способ отображения комбинации затем зависит от случая: вы можете использовать делегата и открыть постоянный редактор или setIndexWidget. Пожалуйста, внимательно изучите приведенные выше ссылки, вы не можете программировать модель/представление, если не знаете, что это такое.   -  person musicamante    schedule 03.05.2021