PyQt5-如何为相同的元素设置不同的样式表?

时间:2019-01-02 03:15:44

标签: python python-3.x pyqt pyqt5 qtstylesheets

我的代码的一部分是:

  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 个答案:

答案 0 :(得分: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_())

enter image description here