Python my.qss文件无法应用于my.ui文件

Python my.qss文件无法应用于my.ui文件,python,pyqt5,qt5,pyside2,Python,Pyqt5,Qt5,Pyside2,我有一个用Qt设计器制作的.ui文件。它非常简单,只有一个QWidget和一个QLabel,没有任何Qt样式表代码 我还有一个.qss文件,只有一行: 背景:rgb(39,44,54); 我想将它们结合在一起,这是我的代码: #这是文件路径的“演示”。 #而且我100%确信原始路径是有效的。 UI\u FILE=“untitled2.UI” QSS_FILE=“test.QSS” 类MyWidget(QWidget): def uuu init uuu(self,parent=None):

我有一个用Qt设计器制作的
.ui
文件。它非常简单,只有一个QWidget和一个QLabel,没有任何Qt样式表代码

我还有一个
.qss
文件,只有一行:

背景:rgb(39,44,54); 我想将它们结合在一起,这是我的代码:

#这是文件路径的“演示”。
#而且我100%确信原始路径是有效的。
UI\u FILE=“untitled2.UI”
QSS_FILE=“test.QSS”
类MyWidget(QWidget):
def uuu init uuu(self,parent=None):
超级(MyWidget,self)。\uuuuu init\uuuuuuuuu(父级)
"""
加载UI文件和QSS文件
"""
ui\u文件=QFile(ui\u文件)
ui_file.open(QFile.ReadOnly)
加载器=QUiLoader()
self.ui=loader.load(ui\u文件,parentWidget=self)
ui_file.close()
样式文件=QFile(QSS文件)
style_file.open(QFile.ReadOnly)
styleSheet=str(style\u file.readAll())
self.setStyleSheet(样式表)
样式_文件。关闭()
“”“此按钮和文本编辑用于
确认qss是否已加载。
"""
bt=QPushButton(“显示样式表”)
bt.clicked.connect(self.show_表)
self.te=QTextEdit()
self.te2=QTextEdit()
主布局=QVBoxLayout(自)
main_layout.addWidget(self.ui)
main_layout.addWidget(bt)
main_layout.addWidget(self.te)
main_layout.addWidget(self.te2)
def显示表(自行,单击):
self\u ss=self.styleSheet()
self.te.setText(self\u ss)
ui\u ss=self.ui.styleSheet()
self.te2.setText(用户界面)
##跑
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
如果不是QApplication.instance():
app=QApplication(sys.argv)
其他:
app=QApplication.instance()
widget=MyWidget()
widget.show()
sys.exit(app.exec_())
这是我的结果:
Qt样式表不工作,但当我单击“显示样式表”时,我可以看到
.qss
已加载

我试着把qss代码改成这个,但没用

QWidget{
背景:rgb(39,44,54);
}
我尝试使用自定义
paintEvent()
,但也不起作用

理论上,只要我在顶层设置样式表,下面的控件就会继承。但事实似乎并非如此

更新:.ui文件


形式
0
0
352
218
形式
0
100
Arial
18
文本标签
Qt::AlignCenter

问题是因为您错误地将readAll()返回的QByteArray转换为字符串,所以不应使用str

当您使用
str(style_file.readAll())
时,您会得到
的“b'background-color:red”
,而不是
的“background-color:red”

要转换为字符串,有以下选项:

styleSheet=style\u file.readAll().data().decode(“utf-8”)

ba=style_file.readAll()
codec=QTextCodec.codeforname(“UTF-8”)
样式表=codec.toUnicode(ba)
输出:


该.ui文件不是纯文本吗?你不能把它粘贴到你的问题中吗?@supersormer我更新了.ui文件的代码。显示的文本显示为带有原始前缀、引号和转义符的字符串表示,这应该是一个明确的提示
QFile.readAll()
返回一个QByteArray,您不能仅使用
str
转换它。您可以使用标准python文件访问,也可以使用
bytearray(data.decode()
@g2m.agent)将其转换为重复的问题,但这并不意味着他们将消除它(请注意,是谁回答的,我的意思是,是谁作为重复关闭了您的帖子)。副本仅表明问题类似,仅此而已。这并不表示你的帖子不好或者应该删除。因此,只有那些没有任何影响的重复项才会被消除,相反,你的重复项会导致错误的QS不会被应用。你完全正确!我从来不这么想。