我对PyQt非常陌生,我正在努力填充QTableView控件。
以下是我的代码:
def data_frame_to_ui(self, data_frame):
"""
Displays a pandas data frame into the GUI
"""
list_model = QtGui.QStandardItemModel()
i = 0
for val in data_frame.columns:
# for the list model
if i > 0:
item = QtGui.QStandardItem(val)
#item.setCheckable(True)
item.setEditable(False)
list_model.appendRow(item)
i += 1
self.ui.profilesListView.setModel(list_model)
# for the table model
table_model = QtGui.QStandardItemModel()
# set table headers
table_model.setColumnCount(data_frame.columns.size)
table_model.setHorizontalHeaderLabels(data_frame.columns.tolist())
self.ui.profileTableView.horizontalHeader().setStretchLastSection(True)
# fill table model data
for row_idx in range(10): #len(data_frame.values)
row = list()
for col_idx in range(data_frame.columns.size):
val = QtGui.QStandardItem(str(data_frame.values[row_idx][col_idx]))
row.append(val)
table_model.appendRow(row)
# set table model to table object
self.ui.profileTableView.setModel(table_model)
实际上,在代码中我成功地填充了一个QListView,但我设置给QTableView的值没有显示出来,而且你可以看到我将行数截断为10,因为显示数据帧 的数百行需要很长时间。
那么,从pandas数据框架中填充表格模型的最快方法是什么?
提前致谢。
QStandardItem
实例是主要瓶颈。 - ekhumororeturn QtCore.QVariant() TypeError: PyQt4.QtCore.QVariant represents a mapped type and cannot be instantiated
。 - Santi Peñate-VeraQvariant()
? - Santi Peñate-Vera