使用css类的PyQt样式失败

时间:2013-04-02 12:40:49

标签: python css qt pyqt stylesheet

我正在开发一个GUI,我必须在其中显示一些ToolButtons。 我正在使用外部CSS文件来设置它们的样式。 为了方便起见,我定义了一个CSS类(使用setProperty),我在CSS文件中使用它来改变按钮的外观,具体取决于它们的类。

我的Python代码如下所示:

...
bt = QtGui.QToolButton(parent.qtObject)
bt . setToolButtonStyle ( QtCore.Qt.ToolButtonTextUnderIcon )
bt.setProperty('class','StaticButton')
bt.setStyleSheet(css_content)
...

我的CSS就像:

QToolButton.StaticButton
{
    border: 2px solid #4f4f51;
    border-radius: 5px;
    font-size: 10px;
    background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #e4e4c8, stop: 1 #b9b9a9);
}

问题是只有按钮的背景会受到影响。我在CSS文件或QToolButton[class=StaticButton]中尝试了许多替代方法,例如.StaticButton。两种选择都导致了保存行为。 如果我直接在按钮上应用CSS:

bt.setStyleSheet("border: 2px solid #4f4f51;border-radius: 5px;font-size: 10px;background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #e4e4c8, stop: 1 #b9b9a9);")

一切都很完美,但我不想在我的python代码中使用CSS。

有人可以告诉我我的代码有什么问题吗?我不明白为什么使用background属性而不使用其他属性。

注意:我已经检查了导入的CSS,文件完全有效。我做了几次测试,每一次,只有背景属性有效...发生了什么?

由于

1 个答案:

答案 0 :(得分:1)

根据参考表设置属性必须工作,但有一个烦人的事情。 ps:我忍受这个问题大约一个月然后承认失败。

我的解决方案即将解决。有点hacky

bt = QToolButton(.)
bt.setObjectName("btStaticxxx") # xxx to any string

的CSS;

QToolButton#btStatic*   //collapses all ToolButton instances that objectname startswith btStatic
{
.
.
}