gpt4 book ai didi

python - 获取小部件的背景颜色 - 真的

转载 作者:行者123 更新时间:2023-11-28 17:41:57 28 4
gpt4 key购买 nike

我无法获取小部件的实际背景颜色。在我的特殊情况下,我在使用 QTabWidget 中的小部件时遇到了问题。

这是在 Windows7 上。所以经典小部件有一些灰色背景,而选项卡中的小部件通常用白色背景绘制。

我试过:

def bgcolor(widget):
color = widget.palette().color(widget.backgroundRole()) # version 1
color = widget.palette().color(QtGui.QPalette.Background) # version 2
rgba = color.red(), color.green(), color.blue(), color.alpha()
return rgba

这几乎是我可以从 Qt 文档以及 google 和 SO 提供的内容中找到的。但是,这是行不通的。

我正在测试 TabWidget 内部和外部的小部件,上面的函数为颜色明显不同的小部件返回相同的颜色。也就是说,它总是返回灰色,即使对于选项卡中的纯白色小部件也是如此。

我是不是漏掉了什么?

编辑:

我的问题是在使用 matplotlib 时,当嵌入 QTabWidget 时,matplotlib 会绘制带有错误背景颜色的“无”facecolor 的图形:灰色,即使父窗口小部件是白色。

为了解决这个问题,我想获取小部件的背景颜色并将其设置为图形的背景颜色。虽然这可能是一个 matplotlib 问题,但我猜这是最快的解决方法。当我注意到我无法获得合适的颜色时,我变得坚持 :)

最佳答案

调色板正在返回正确的颜色。

您可能犯的错误是您假设“背景”对于所有小部件始终意味着相同的事情。我们以一个未修改的QListWidget为例。在具有传统浅色方案的桌面上,这可能会显示为 3D 凹陷面板内的白色视口(viewport)。但是如果你查询这个小部件的“背景”,你会看到这样的东西:

>>> widget = QtGui.QListWidget()
>>> widget.palette().color(QtGui.QPalette.Background).name()
'#edecec'

这显然不是白色的。所以 Background 是查询此小部件的错误颜色角色。相反,它看起来像 Base 可能更合适:

>>> widget.palette().color(QtGui.QPalette.Base).name()
'#ffffff'

值得注意的是 documentation for color roles声明 BackgroundForeground 是过时的值,建议使用 WindowWindowText。也许这是因为以前的术语现在被认为具有误导性。

更新:

在使用基于像素图样式的平台上,一些报告的调色板颜色将与小部件的视觉外观不匹配。此问题特别影响 Windows 和 OSX,因此可以解释为什么您无法获得选项卡的明显背景颜色。此问题记录在 Qt FAQ 中,这也给出了一些可能的解决方案(尽管 PyQt5 支持 QProxyStyle 选项,但 PyQt4 不支持)。

关于python - 获取小部件的背景颜色 - 真的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014011/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com