python - 是否可以通过委托更改 PyQt5 TableView 中的颜色?
问题描述
我正在使用 PyQt5 QTableView 在我的 GUI 中显示一个 SQL 表。为了对齐最后一列中的值,我使用这个:
delegate = AlignDelegate(self.view)
self.view.setItemDelegateForColumn(3, delegate)
class AlignDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super(AlignDelegate, self).initStyleOption(option, index)
option.displayAlignment = (QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
现在我想知道是否可以添加一些东西来AlignDelegate
改变显示数字的颜色(将负数涂成红色)。我没有找到一个可行的解决方案,所以如果有人能给我一个提示,那就太好了。
我正在使用 Python 3.8、PyQt5 5.15.0、PyCharm 2020.2 和 Linux Mint 19.3。
解决方案
您必须更改 QStyleOptionViewItem 的调色板以更改文本颜色和 QStyleOptionViewItem 的 backgroundBrush 以更改背景颜色。
class AlignDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super(AlignDelegate, self).initStyleOption(option, index)
option.displayAlignment = QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter
value = index.data()
if value < 0:
option.palette.setBrush(
QtGui.QPalette.Text, QtGui.QBrush(QtGui.QColor("red"))
)
option.backgroundBrush = QtGui.QBrush(QtGui.QColor("green"))
推荐阅读
- google-maps - 地理编码服务:超过 API 的每日请求配额
- java - 设备位置在另一台设备上为空(GoogleMaps 活动)
- c - struct 变量成员 null 仅用于一个实例
- aframe - 提取与 raycaster 相交的组件信息的最佳方法是什么?
- excel - 向上舍入到下一个整数
- python - 使用 Python 从具有序列跨度 ID 的 HTML 页面中抓取数据
- python - 如何在开始之前找到执行时间?
- emacs - 为什么我不能使用 `execute-extended-command` 执行 `following-char`?
- amazon-web-services - 我刚刚恢复了一个最近过期的域名。我的网站需要正常的传播时间(48-72 小时)才能重新上线吗?
- mysql - 从 1 个表中计算两列