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

背景

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每日出拳老爷子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值