Fastest way to populate QTableView from Pandas data frame

后端 未结 7 1234
面向向阳花
面向向阳花 2020-11-27 16:54

I\'m very new to PyQt and I am struggling to populate a QTableView control.

My code is the following:

def data_frame_to_ui(self, data_frame):
                


        
7条回答
  •  情深已故
    2020-11-27 17:11

    Apart from using QtCore.QAbstractTableModel, one may also inherit from QtGui.QStandardItemModel. I find this way is easier to support handleChanged event emiited from QTableView.

    from PyQt5 import QtCore, QtGui
    
    class PandasModel(QtGui.QStandardItemModel):
        def __init__(self, data, parent=None):
            QtGui.QStandardItemModel.__init__(self, parent)
            self._data = data
            for row in data.values.tolist():
                data_row = [ QtGui.QStandardItem("{0:.6f}".format(x)) for x in row ]
                self.appendRow(data_row)
            return
    
        def rowCount(self, parent=None):
            return len(self._data.values)
    
        def columnCount(self, parent=None):
            return self._data.columns.size
    
        def headerData(self, x, orientation, role):
            if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
                return self._data.columns[x]
            if orientation == QtCore.Qt.Vertical and role == QtCore.Qt.DisplayRole:
                return self._data.index[x]
            return None
    

提交回复
热议问题