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 - 如何为相同的元素设置不同的样式表?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 QTableView 中的当前项目设置样式表

如何为 html“选择”元素的选项设置样式?

Vs Blend + Windows 8:如何为应用程序中的元素设置系统通知主题的样式?

如何为分组表部分设置不同的背景图像..?

使用 MFC,如何为带有圆角和阴影的 CEdit 控件设置样式?

jQuery如何为指定标签添加和删除一个样式