i'm new pyqt , struggling populate qtableview control.
my code following:
def data_frame_to_ui(self, data_frame): """ displays pandas data frame gui """ list_model = qtgui.qstandarditemmodel() = 0 val in data_frame.columns: # list model if > 0: item = qtgui.qstandarditem(val) #item.setcheckable(true) item.seteditable(false) list_model.appendrow(item) += 1 self.ui.profileslistview.setmodel(list_model) # 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 row_idx in range(10): #len(data_frame.values) row = list() 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 table object self.ui.profiletableview.setmodel(table_model) actually in code succeed populate qlistview, values set qtableview not displayed, can see truncated rows 10 because takes forever display hundreds of rows of data frame.
so, fastest way populate table model pandas data frame?
thanks in advance.
personally create own model class make handling easier.
for example:
import sys pyqt4 import qtcore, qtgui qt = qtcore.qt class pandasmodel(qtcore.qabstracttablemodel): def __init__(self, data, parent=none): qtcore.qabstracttablemodel.__init__(self, parent) self._data = data def rowcount(self, parent=none): return len(self._data.values) def columncount(self, parent=none): return self._data.columns.size def data(self, index, role=qt.displayrole): if index.isvalid(): if role == qt.displayrole: return qtcore.qvariant(str( self._data.values[index.row()][index.column()])) return qtcore.qvariant() if __name__ == '__main__': application = qtgui.qapplication(sys.argv) view = qtgui.qtableview() model = pandasmodel(your_pandas_data) view.setmodel(model) view.show() sys.exit(application.exec_())
Comments
Post a Comment