QTableView 的 ComboBox Delegate 模型与 PandasModel 不同步

问题描述 投票:0回答:1

我有一个 QTableView,它在表的 2 列中使用组合框委托。如果没有对列进行排序,则从组合框中选择的项目会正确显示在 TableView 中。当列排序时,所选项目不会显示在 TableView 中。

委托中的数据框模型反映了TableView中当前排序的数据。 PythonModel 中的数据帧反映了原始的未排序数据帧。 列排序后如何同步数据帧?

    self.model = PandasModel(self.df_referrals)
    self.proxyModel = MySortFilterProxyModel()
    self.proxyModel.setSourceModel(self.model)
    self.table_view.setSortingEnabled(True)
    self.table_view.setModel(self.proxyModel)
    self.table_view.setItemDelegate(EscapeDelegate(self.model))

    self.filter_referrals.textChanged.connect(self.proxyModel.setSearchText)

    self.area_delegate = ComboBoxDelegate(self.area_list, self.model)
    self.county_delegate = ComboBoxDelegate(self.county_dict, self.model)
    self.table_view.setItemDelegateForColumn(4, self.area_delegate)
    self.table_view.setItemDelegateForColumn(5, self.county_delegate)
python dataframe delegates qtableview
1个回答
0
投票

问题出在我的 PandasModel 的 setData 函数中。 我使用的是值而不是 iloc。

self.data_frame.iloc[index.row(),index.column()] = value

self.data_frame.values[index.row(),index.column()] = value

© www.soinside.com 2019 - 2024. All rights reserved.