如何在 PyQT4 表视图中突出显示每行中具有最高值的单元格

大卫

我对 PyQT 很陌生,偶然发现了以下障碍。我创建了一个 Pandas DataFrame 并设法在 pyqt4 Table View 中使用我在另一个线程中找到的一些代码将它可视化(从 Pandas 数据框填充 QTableView 的最快方法)。现在我想突出显示每一行中的最高值。

目前,我用于将 Pandas DataFrame 加载到 Table View 的代码如下所示:

class PandasModel(QtCore.QAbstractTableModel):
    """
    Class to populate a table view with a pandas dataframe
    """
    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):
        if index.isValid():
            if role == QtCore.Qt.DisplayRole:
                return str(self._data.values[index.row()][index.column()])
        return None

    def headerData(self, col, orientation, role):
        if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
            return self._data.columns[col]
        return None

我不知道使用这种方法是否可以实现我想要实现的目标,因为我认为我不太了解 PyQT 结构,因此欢迎任何解决方案。

理想的结果我想到最后会像这样的例子

先感谢您!

Esostack

在此处输入图片说明

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QTreeWidgetItem
import sys
import pandas as pd
import numpy as np

class PandasModel(QtCore.QAbstractTableModel):
    """
    Class to populate a table view with a pandas dataframe
    """
    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):
        if index.isValid():
            if role == QtCore.Qt.DisplayRole:
                return str(self._data.values[index.row()][index.column()])
            if role == QtCore.Qt.BackgroundColorRole:
                row = index.row()
                col = index.column()
                if self._data.iloc[row,col] == self._data.iloc[row].max():
                    color = QtGui.QColor('red')
                else:
                    color = QtGui.QColor('white')
                pixmap = QtGui.QPixmap(26, 26)
                pixmap.fill(color)
                return color
        return None

    def headerData(self, col, orientation, role):
        if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
            return self._data.columns[col]
        return None

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    df = pd.DataFrame(np.random.randn(8,3).round(3))

    view = QtWidgets.QTableView()
    view.setModel(PandasModel(df))

    view.show()
    sys.exit(app.exec_())

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Anaconda中安装PyQt4?

来自分类Dev

如何在PyQt4中旋转圆形鼠标

来自分类Dev

如何在特定单元格 pyqt4 中添加列表

来自分类Dev

PyQt:如何在PyQt4中的QGroupBox内添加网格布局

来自分类Dev

如何在python中从pyqt4升级到pyqt5

来自分类Dev

如何在PyQt4中调整QMenuBar的大小以显示4K

来自分类Dev

如何拥有多个工具栏 PyQt4

来自分类Dev

如何刷新嵌入在PYQT4中的MatPlotlib?

来自分类Dev

如何使用PyQt4在Ubuntu中播放声音?

来自分类Dev

如何使用InternalId在PyQt4的QTreeView中获取文本

来自分类Dev

如何使用PyQt4在Ubuntu中播放声音?

来自分类Dev

在PyQt4中我如何启动窗口

来自分类Dev

如何刷新嵌入在PYQT4中的MatPlotlib?

来自分类Dev

如何在PyQt4中通过滚动显示RGBA numpy数组图像?

来自分类Dev

如何在QTextEdit pyqt4中显示不可打印的符号?

来自分类Dev

如何在Python PyQt4中设置现有MainWidnow的中央小部件?

来自分类Dev

如何在PyQt4的QTextEdit中更改所有字体的大小?

来自分类Dev

如何在窗口的PyQt4中的不同画布中绘制不同的图?

来自分类Dev

如何在pyqt4中正确创建第二个窗口

来自分类Dev

如何在PyQt4中为QListView获取selectionchange事件

来自分类Dev

如何在PyQt4的NxN网格布局中插入QImage?

来自分类Dev

如何在PyQt4中杀死QtCore.QTimer一枪?

来自分类Dev

如何在启动画面pyqt4中添加进度栏

来自分类Dev

如何在python PYQt4中保存几个QtextEdits的文本?

来自分类Dev

如何在PyQt4的NxN网格布局中插入QImage?

来自分类Dev

如何在PyQt4中为QtGui.QTextEdit设置自动滚动?

来自分类Dev

如何在PyQt4中创建自动完成组合框?

来自分类Dev

如何在PyQt4中禁用按钮(或整个主窗口),直到函数返回0

来自分类Dev

如何在PyQt4中创建多页应用程序?

Related 相关文章

  1. 1

    如何在Anaconda中安装PyQt4?

  2. 2

    如何在PyQt4中旋转圆形鼠标

  3. 3

    如何在特定单元格 pyqt4 中添加列表

  4. 4

    PyQt:如何在PyQt4中的QGroupBox内添加网格布局

  5. 5

    如何在python中从pyqt4升级到pyqt5

  6. 6

    如何在PyQt4中调整QMenuBar的大小以显示4K

  7. 7

    如何拥有多个工具栏 PyQt4

  8. 8

    如何刷新嵌入在PYQT4中的MatPlotlib?

  9. 9

    如何使用PyQt4在Ubuntu中播放声音?

  10. 10

    如何使用InternalId在PyQt4的QTreeView中获取文本

  11. 11

    如何使用PyQt4在Ubuntu中播放声音?

  12. 12

    在PyQt4中我如何启动窗口

  13. 13

    如何刷新嵌入在PYQT4中的MatPlotlib?

  14. 14

    如何在PyQt4中通过滚动显示RGBA numpy数组图像?

  15. 15

    如何在QTextEdit pyqt4中显示不可打印的符号?

  16. 16

    如何在Python PyQt4中设置现有MainWidnow的中央小部件?

  17. 17

    如何在PyQt4的QTextEdit中更改所有字体的大小?

  18. 18

    如何在窗口的PyQt4中的不同画布中绘制不同的图?

  19. 19

    如何在pyqt4中正确创建第二个窗口

  20. 20

    如何在PyQt4中为QListView获取selectionchange事件

  21. 21

    如何在PyQt4的NxN网格布局中插入QImage?

  22. 22

    如何在PyQt4中杀死QtCore.QTimer一枪?

  23. 23

    如何在启动画面pyqt4中添加进度栏

  24. 24

    如何在python PYQt4中保存几个QtextEdits的文本?

  25. 25

    如何在PyQt4的NxN网格布局中插入QImage?

  26. 26

    如何在PyQt4中为QtGui.QTextEdit设置自动滚动?

  27. 27

    如何在PyQt4中创建自动完成组合框?

  28. 28

    如何在PyQt4中禁用按钮(或整个主窗口),直到函数返回0

  29. 29

    如何在PyQt4中创建多页应用程序?

热门标签

归档