Python Qt:为什么qss文件中只有一种样式有效

Python Qt:为什么qss文件中只有一种样式有效,python,pyqt,qtstylesheets,Python,Pyqt,Qtstylesheets,我正在我的项目中使用qss文件。整个守则是: from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * import sys class Win(QWidget): def __init__(self): super().__init__() self.setStyleSheet( 'QWi

我正在我的项目中使用qss文件。整个守则是:

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys

class Win(QWidget):

    def __init__(self):
        super().__init__()

        self.setStyleSheet(
                           'QWidget{background: rgb(150, 150, 150);};'
                           'QPushButton{background-color: rgb(255, 0, 0); font-size: 100px;};'
                           'QLineEdit{background-color: yellow; font-size:5px;};'
                           )

        layout = QGridLayout()
        self.setLayout(layout)

        lay1 = QVBoxLayout()
        btn1 = QPushButton('btn')
        lay1.addWidget(btn1)
        layout.addLayout(lay1, 0, 0, 1, 1)

        lay2 = QVBoxLayout()
        label1 = QLabel('label')
        lay2.addWidget(label1)
        layout.addLayout(lay2, 0, 1, 1, 1)

        lay3 = QVBoxLayout()
        edit = QLineEdit('edit')
        lay3.addWidget(edit)
        layout.addLayout(lay3, 1, 0, 1, 1)

        layout.setRowStretch(0, 1)
        layout.setRowStretch(1, 1)
        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(1, 1)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    win = Win()
    win.show()
    sys.exit(app.exec_())
我正在使用``setStyleSheet`控制我的窗口,结果是:

我们可以发现只有
QWidget{background:rgb(150150150);}
起作用。我希望
QPushButton
的背景色被
'QPushButton{背景色:rgb(255,0,0);字体大小:100px;};'变成红色,并且
QPushButton
的背景色实际上不是红色

然后,如果我注释
'QWidget{background:rgb(150150150);};',新代码为:

        ...
        self.setStyleSheet(
                           # 'QWidget{background: rgb(150, 150, 150);};'
                           'QPushButton{background-color: rgb(255, 0, 0); font-size: 100px;};'
                           'QLineEdit{background-color: yellow; font-size:5px;};'
                           )
        ...
现在,结果是:

我们可以找到
'QPushButton{背景色:rgb(255,0,0);字体大小:100px;};'可以工作,但是
'QLineEdit{背景色:黄色;字体大小:5px;};'仍然不工作

我怎样才能使这三种风格发挥作用

'QWidget{background: rgb(150, 150, 150);};'
'QPushButton{background-color: rgb(255, 0, 0); font-size: 100px;};'
'QLineEdit{background-color: yellow; font-size:5px;};'

QSS语法中有一个错误,因为在
}
之后不应该有

self.setStyleSheet(
QWidget{背景:rgb(150,150,150);}
QPushButton{背景色:rgb(255,0,0);字体大小:100px;}
“QLineEdit{背景色:黄色;字体大小:5px;}”
)
此外,许多样式在QS中的表现不同,例如,我使用fusion样式获得了正确的结果:

app.setStyle(“fusion”)