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

2024-05-07

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

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

I tried:

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 内部和外部的小部件,上面的函数为明显不同颜色的小部件返回相同的颜色。 也就是说,它总是返回灰色,即使对于选项卡中的纯白色小部件也是如此。

我在这里错过了什么吗?

EDIT:

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

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


调色板返回正确的颜色。

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

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

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

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

值得注意的是,颜色角色的文档 http://qt-project.org/doc/qt-4.8/qpalette.html#ColorRole-enum指出Background and Foreground是过时的值,其中Window and WindowText而是被推荐。也许这是因为以前的术语现在被认为具有误导性。

UPDATE:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取小部件的背景颜色 - 真的 的相关文章

随机推荐

  • AMQPRuntimeException:读取数据时出错。收到 0 而不是预期的 7 字节

    它曾经有效 但现在不再有效了 我正在使用 php amqplib 和 RabbitMQ 当我尝试创建新的 AMQP 连接时 connection new AMQPConnection localhost 5672 username pass
  • “Java”“List”方法“size”如何工作?

    在Java中 有一个List接口和size 计算尺寸的方法List 当我打电话时List size 怎么算呢 是线性计数 还是确定计数后只返回值size 大小定义为列表中元素的数量 该实现未指定 size 成员函数如何操作 迭代成员 返回存
  • python执行列表和函数列表[重复]

    这个问题在这里已经有答案了 我正在将 Python 2 7 与 Autodesk Maya 结合使用 这是我的问题的一个例子 import maya cmds as m def a passedString print this passe
  • 在 jsTree 上下文菜单中创建自定义项目

    我在 asp net mvc3 中使用 jsTree 和 contextmenu 创建一个树视图 div ul li a href class usr Model Name a Html Partial Childrens Model li
  • 在 C# 中使用 VB6 字符串数组

    我有 旧的 VB6 代码 我想从 C 代码中使用它 这有点类似于这个问题 https stackoverflow com questions 23507416 passing string array from vb6 to c net 但
  • WatiN pressTab 不按 Tab

    有没有人找到了在 Internet Explorer 中使用 watiN 按 Tab 键的方法 您的意思是要按 Tab 键本身 还是只是单击看起来像 Tab 的 HTML 元素 对于后者 请对适当的元素 Div Span 等 使用 Clic
  • mysql 如何比较 dd-mon-yy 格式的日期

    如何比较格式中的日期dd mon yy 例如 2014 年 11 月 10 日 gt 2013 年 10 月 7 日 select expiration date from grocery where expiration date lt
  • 将文件名存储在变量中并在 SSIS 中使用该文件名创建表

    我在 SSIS 的一个文件夹中只有几个 excel 源文件 我想从这些 Excel 文件中提取数据并加载到 SQL 表中 我的问题是我想一一保存所有文件名 并想创建与文件名完全相同的 SQL 表 然后要加载相应表中的每个Excel文件 请帮
  • Oozie SSH 操作

    Oozie SSH 操作问题 Issue 我们正在尝试在集群的特定主机上运行一些命令 我们为此选择了 SSH Action 我们面对这个 SSH 问题已经有一段时间了 这里真正的问题可能是什么 请指出解决方案 logs AUTH FAILE
  • LibGDX - 着色器适用于桌面但不适用于 Android

    我编写了一个简单的程序 可以在 3D 环境中渲染球体 并根据球体周围的四个光源为其着色 当我在桌面上运行该程序时 它工作得很好 但在 Android 设备上 球体只是纯色的 下面是一些图片来说明我正在谈论的内容 gt Desktop gt
  • “马来半岛标准时间”的时区问题

    我有一个在 C 上运行以下代码的程序 TimeZoneInfo localZone TimeZoneInfo Local string timeZone TimeZoneInfo FindSystemTimeZoneById localZo
  • $.each([集合]) 与 $([集合]).each()

    两种方法似乎产生相同的结果 http jsbin com owedo 但我一直很难真正说服人们第二种方法有效 因为它显然并不为人所知 Create some data var foo vals id foo id bar Common Me
  • 将 PHP 错误处理程序限制为特定命名空间

    PHP 有没有办法只为特定的命名空间设置错误处理程序 我正在构建一个小型框架 我希望能够通过设置自定义错误处理程序并抛出异常来尝试捕获其名称空间内的所有错误 警告 通知消息 在此特定名称空间之外触发的错误应该以常规方式表现 用PHP可以完成
  • 数据透视和运行时错误 1004:应用程序定义或对象定义的错误

    我对宏和 VBA 编码很陌生 我正在尝试创建一个非常简单的宏 它从包含 33 列的表中获取数据并将其转换为数据透视表 只有最后 3 列 31 32 33 包含数字 我需要将其显示在枢轴上 因为我想比较当前月份 上个月以及逐月的变动 到目前为
  • 将图像文件存储在猫鼬模式的二进制数据中并以html形式显示图像

    我正在使用 Express Node js 和 Mongodb 创建上传和显示图像文件的网页 我使用 schema 将图像的二进制文件保存在 mongodb 中 这是我在index js和db js中的一点代码 var Post mongo
  • 对 Dictionary 的键使用锁定

    我有一个Dictionary
  • 强制动态链接库中静态变量的预初始化

    C 11 标准第 3 6 2 条 第 4 条规定 具有静态存储持续时间的非局部变量的动态初始化是否在 main 的第一个语句之前完成是由实现定义的 C 标准将静态初始化与动态初始化区分开来 静态初始化仅需要计算编译时常量 我相信急切静态初始
  • 使用 Node.js 将对象写入文件

    我已经在 stackoverflow google 上搜索过这个 但似乎无法弄清楚 我正在抓取给定 URL 页面的社交媒体链接 该函数返回一个包含 URL 列表的对象 当我尝试将此数据写入不同的文件时 它会输出到该文件 object Obj
  • Python 请求:使用 Multipart/form-data 在 Facebook 上发布图像

    我正在使用 facebook API 在页面上发布图像 我可以使用以下命令从网络发布图像 import requests data url url caption caption access token token status requ
  • 获取小部件的背景颜色 - 真的

    我无法获取小部件的实际背景颜色 在我的特殊情况下 我在使用 QTabWidget 中的小部件时遇到问题 这是在Windows7上 因此 经典的小部件有一些灰色背景 而选项卡内的小部件通常用白色背景绘制 I tried def bgcolor