我正在开发一个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,文件完全有效。我做了几次测试,每一次,只有背景属性有效...发生了什么?
由于
答案 0 :(得分:1)
根据参考表设置属性必须工作,但有一个烦人的事情。 ps:我忍受这个问题大约一个月然后承认失败。
我的解决方案即将解决。有点hacky
bt = QToolButton(.)
bt.setObjectName("btStaticxxx") # xxx to any string
的CSS;
QToolButton#btStatic* //collapses all ToolButton instances that objectname startswith btStatic
{
.
.
}