您当前的位置: 首页 >  每日出拳老爷子 qt

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

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

背景

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.

关注
打赏
查看更多评论

每日出拳老爷子

暂无认证

  • 7浏览

    0关注

    109博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录