您当前的位置: 首页 >  qt

每日出拳老爷子

暂无认证

  • 4浏览

    0关注

    135博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

如何将任意dataframe显示在PYQT界面

每日出拳老爷子 发布时间:2021-08-05 16:28:36 ,浏览量:4

背景

PYQT做UI开发时,经常需要将各类Dataframe数据反应到前端UI,如果有一个通用的方法,无论想要显示的Dataframe具体的行列和值,都可以用相同函数反馈到前端会大大提高开发效率。

解决方案
  • QT端的组件选用TableView

  • 后端代码中先造一个接受并分析所有Dataframe的通用类

  • `#用于直接显示Pandas表格的类 class PdTable(QAbstractTableModel): def init(self, data, showAllColumn=False): QAbstractTableModel.init(self) self.showAllColumn = showAllColumn self._data = data

    def rowCount(self, parent=None): return self._data.shape[0]

    def columnCount(self, parent=None): return self._data.shape[1]

    def data(self, index, role=Qt.DisplayRole): if index.isValid(): if role == Qt.DisplayRole: return str(self._data.iloc[index.row(), index.column()]) return None

    def headerData(self, col, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: if type(self._data.columns[col]) == tuple: return self._data.columns[col][-1] else: return self._data.columns[col] elif orientation == Qt.Vertical and role == Qt.DisplayRole: return (self._data.axes[0][col]) return None`

  • 程序中调用如下函数将任意df展示到TableView组件

  • def showTable(table_name,view_widget,showAllColumn=False): # 展示 model = PdTable(table_name,showAllColumn) curwidget = view_widget curwidget.setModel(model) curwidget.setAlternatingRowColors(True) curwidget.show()

  • 其中,view_widget就是前端界面中用于展示任意DF的tableView.

关注
打赏
1657016083
查看更多评论
立即登录/注册

微信扫码登录

0.0352s