在python pyqt4中显式设置样式表?

时间:2016-10-01 18:18:17

标签: python pyqt pyqt4 qtstylesheets

在pyqt标准方式设置样式表是这样的:

MainWindow.setStyleSheet(_fromUtf8("/*\n"
"gridline-color: rgb(85, 170, 255);\n"
"QToolTip\n"
"{\n"
"    border: 1px solid #76797C;\n"
"    background-color: rgb(90, 102, 117);;\n"
"    color: white;\n"
"    padding: 5px;\n"
"    opacity: 200;\n"
"}\n"
"#label_3{\n"
"    background-color:rgb(90, 102, 117);\n"
"    color:white;\n"
"    padding-left:20px;\n"
" \n"
"}\n"
"#label_2{\n"
"    color:white;\n"
"    padding-left:20px;\n"
" \n"
"}\n"

但是就像我们在html中链接样式表一样 <link rel="stylesheet" href="style.css"> 我们不能在pyqt中做同样的事情吗?它有助于组织事物。

1 个答案:

答案 0 :(得分:4)

目前只有两种主要方式来设置样式表。第一种方法是使用widget.setStyleSheet(""" QToolTip { border: 1px solid #76797C; background-color: rgb(90, 102, 117); color: white; padding: 5px; opacity: 200; } """) 方法:

python myapp.py -stylesheet style.qss

这只会占用一个字符串,因此需要从文件中显式读取外部资源,或从模块导入外部资源。

第二种方法是使用-stylesheet command-line argument,它允许将外部qss资源指定为路径:

QApplication

这开启了诱人黑客攻击的可能性,因为它很容易操纵传递给import sys args = list(sys.argv) args[1:1] = ['-stylesheet', 'style.qss'] app = QtGui.QApplication(args) 构造函数的args,并显式插入默认样式表:

{{1}}

(在列表的开头插入额外的参数可确保用户仍可以使用自己的样式表覆盖默认值。)