Pyqt5 QToolButton 使用 autoRaise 方法设置样式表

Posted

技术标签:

【中文标题】Pyqt5 QToolButton 使用 autoRaise 方法设置样式表【英文标题】:Pyqt5 QToolButton set style sheet with the autoRaise method 【发布时间】:2022-01-18 23:04:07 【问题描述】:

我正在为 GUI 创建一个样式表 .qss 文件。我正在尝试将QToolButton 方法autoRaise 添加到样式表中:

btn_on  = QToolButton()
btn_on.setStyleSheet("""
                 QToolButton:autoRaised
                 color: rgb(0,0,0);
                 background-color: rgb(142,142,142);
                 
                 """)
btn_on.setAutoRaise(True)

但它无法识别autoRaise 属性。这与您为QPushButton 定义disabled 属性相同,该属性有效:

ss = QPushButton()
ss.setStyleSheet("""
                 QToolButton:autoRaised
                 color: rgb(0,0,0);
                 background-color: rgb(142,142,142);
                 
                 """)
ss.setDisabled(True)

如何在.qss 文件中定义autoRaise 属性?

【问题讨论】:

谢谢。我已将其添加到文件中,并调用 .qss。但是当我改变按钮的状态(button.setAutoRaise(False))时,它并没有改变? 看我的回答,我已经扩展了解释。 【参考方案1】:

autoRaise没有结尾的“D”)是 Qt 属性

:syntax 用于伪状态,通常表示小部件的状态或通用属性。 它们是预定义的并且对所有小部件都是通用的,即使某些状态仅由某些小部件支持(例如 :read-only 用于文本小部件)并且基于 CSS 伪类;查看完整的list of supported pseudo states。

如果要根据属性设置样式,必须正确使用property selector syntax:

    QToolButton[autoRaise="true"] 
        color: rgb(0,0,0);
        background-color: rgb(142,142,142);
    

请注意,在某些情况下,样式可能会覆盖某些绘画或完全忽略颜色。例如,在具有 Oxygen 和 Breeze 样式的 Linux 上,悬停样式会忽略颜色并使用默认绘画。

还请注意,样式表只评估一次,因此如果属性更改不会反映更改:您需要再次重新设置样式表。这不能自动完成。

    btn_on.setAutoRaise(False)
    btn_on.setStyleSheet(btn_on.styleSheet())

如果样式表设置在父级或应用程序上,而目标小部件没有设置样式表,则必须为该父级或应用程序重新设置样式表。

【讨论】:

非常感谢您的解释

以上是关于Pyqt5 QToolButton 使用 autoRaise 方法设置样式表的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 之QToolButton工具按钮

PyQt5 之QToolButton工具按钮

pyqt5学习之QToolButton

《PyQT5软件开发 - 控件篇》第2章 按钮-2(QRadioButton, QCheckBox, QToolButton)

PyQt5博文目录

python pyqt5 按钮 QPushButton