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软件开发 - 控件篇》第2章 按钮-2(QRadioButton, QCheckBox, QToolButton)