PyQt5 - 如何为相同的元素设置不同的样式表?
Posted
技术标签:
【中文标题】PyQt5 - 如何为相同的元素设置不同的样式表?【英文标题】:PyQt5 - How can I set different stylesheets for the same elements? 【发布时间】:2019-01-02 03:15:44 【问题描述】:我的部分代码是:
layout2 = QGridLayout()
#Design
self.tab2.setStyleSheet("""
.QLabel
color: white;
font-weight: bold;
border: 0px;
margin: 0px;
padding: 0px;
.QWidget
background-color: rgb(0,0,0);
""")
[...]
layout2.addWidget(QLabel("1"),1,0)
layout2.addWidget(QLabel("SHIRT"),1,1)
#Yahoo details:
layout2.addWidget(QLabel("Your-email"),1,2)
layout2.addWidget(QLabel(":"),1,3)
layout2.addWidget(QLabel("Your-pass"),1,4)
#-----
layout2.addWidget(QLabel("Status"),1,8)
layout2.addWidget(QLabel("Action"),1,9)
我正在尝试在我拥有的 QLabel 元素上设置不同的颜色(以及其他一些东西,文本对齐等)
我怎样才能单独做到这一点?这样我就不会全部更改???
请帮忙,谢谢!
【问题讨论】:
【参考方案1】:您必须使用 objectName:
from PyQt5 import QtWidgets
QSS = '''
.QLabel
color: white;
font-weight: bold;
border: 0px;
margin: 0px;
padding: 0px;
.QWidget
background-color: rgb(0,0,0);
.QLabel#1
background-color: blue;
.QLabel#type1
background-color: yellow;
.QLabel#email
color: red;
.QLabel#password
background-color: green;
qproperty-alignment: 'AlignVCenter | AlignRight';
'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
w.setStyleSheet(QSS)
layout = QtWidgets.QGridLayout(w)
layout.addWidget(QtWidgets.QLabel("1", objectName="type1"),1,0)
layout.addWidget(QtWidgets.QLabel("SHIRT", objectName="shirt"),1,1)
#Yahoo details:
layout.addWidget(QtWidgets.QLabel("Your-email", objectName="email"),1,2)
layout.addWidget(QtWidgets.QLabel(":"),1,3)
layout.addWidget(QtWidgets.QLabel("Your-pass", objectName="password"),1,4)
#-----
layout.addWidget(QtWidgets.QLabel("Status", objectName="type1"),1,8)
layout.addWidget(QtWidgets.QLabel("Action"),1,9)
w.show()
sys.exit(app.exec_())
【讨论】:
以上是关于PyQt5 - 如何为相同的元素设置不同的样式表?的主要内容,如果未能解决你的问题,请参考以下文章
Vs Blend + Windows 8:如何为应用程序中的元素设置系统通知主题的样式?