PyQt中的样式表伪状态语法
我在我的脚本中有很多按钮,并且我加载了一个外部的css文件来处理我软件中的各种小部件。现在我需要通过类来查找按钮,并尝试定义一些特定的属性。像这样通用的按钮调用:QFrame:QPushButton #btnName { css: blah; } 是可以工作的,但伪状态却不行,特别是悬停和按下状态。我正在尝试的代码如下:
--THIS WORKS
QFrame:QPushButton #btnName { css: blah; }
--THESE DO NOT
QFrame:QPushButton:hover #btnName { css: hoverstuff; }
QFrame:QPushButton:pressed #btnName { css: pressedstuff; }
这个样式表里有很多css样式;是不是因为这些行“上面”的内容影响了它们?我的伪状态语法是不是写错了?这是怎么回事!?提前谢谢大家。
1 个回答
5
你现在使用的语法在所有例子中都是错误的。
选择器 QFrame:QPushButton
会忽略 :QPushButton
,因为它不是一个有效的 伪状态。而且,ID选择器前面的空格意味着这个规则会应用到所有名为 #btnName
的子对象(这可能不是你想要的,但这就是为什么第一个例子看起来有点有效的原因)。
我猜你真正想要的是这个规则应用于任何 QPushButton
,并且它的 objectName
是 "btnName",同时它也是 QFrame
的子对象。
在这种情况下,第一个规则应该是:
QFrame QPushButton#btnName { css: blah; }
而另外两个规则应该是:
QFrame QPushButton#btnName:hover { css: hoverstuff; }
QFrame QPushButton#btnName:pressed { css: pressedstuff; }
想了解更多选择器类型的细节,可以查看 这里。