如何在 PyQt5 中获取 QFrame 的背景颜色?

How to get backgroud color of QtFrame in PyQt5?

我知道怎么设置:

color_frame.setStyleSheet("QWidget { background-color: blue}")

但是我如何读取 QtFrame 背景的颜色值(可能是十六进制,我不在乎)?

请注意,我不是在寻找:

color_frame.palette().highlight().color().name()

因为它似乎没有给我 QtFrame 背景颜色的值。

highlight() 不会给你背景,因为 Highlight 角色用于选择。

默认情况下,widgets使用Window角色(除非通过setBackgroundRole()) to draw the background, so you need to use the related window()函数指定获取:

color_frame.palette().window().color().name()

或者仅使用 color() 并将相关角色作为参数:

color_frame.palette().color(QPalette.Window).name()

稍微确定一点,用当前后台角色:

color_frame.palette().color(color_frame.backgroundRole()).name()

注意:

  • 在某些情况下,样式可能会以略有不同的方式使用调色板设置的颜色(包括样式表中设置的颜色),并且绘图可能与预期的不同;请记住,调色板颜色仅用作参考,由样式“决定”对此有多严格;
  • 如果使用通用(o 否)选择器,则为父部件设置全局 属性 通常不是一个好主意:一些复杂的部件需要尽快 单个 属性 已设置,所有其他也必须设置。 QComboBox 和 QScrollBar 尤其如此;您应该使用更具体的 selector (可能使用 class 或对象名称);
  • 设置样式表后可从调色板读取的唯一颜色属性是 color(适用于 WindowTextTextButtonText 角色)、background(Window, BaseButton), selection-color (Highlight), selection-background-color (HighlightedText) 和alternate-base (AlternateBase);所有其他颜色角色都是根据上述自动计算的;任何其他 属性,特别是为子控件设置的那些,可用;