当前位置:   article > 正文

PySide6 头疼笔记 QSS无法加载id 选择器的问题_pyside6 qss

pyside6 qss

PySide6 无法加载qss文件中id选择器的问题

问题描述

  • 核心代码
...
class MyWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
                self.sys_info_label = QtWidgets.QLabel(self, alignment = QtCore.Qt.AlignCenter)
                self.layout = QtWidgets.QVBoxLayout(self)
        		self.layout.addWidget(self.sys_info_label)
...
if __name__ == '__main__':
	app = QApplication(sys.argv)
   	mywid = yl_widget.MyWidget()
   	#加载 qss 信息
   	with open('./qss/yl_style.qss', 'r', encoding='utf-8') as f:
        mywid.setStyleSheet(f.read())
    mywid.show()
    sys.exit(app.exec())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • qss 代码
#sys_info_label{
    background-color:#666;
}
  • 1
  • 2
  • 3

这段QSS代码在程序执行后并没有出现预期的效果,压根没有变化。这个地方就是一个PySide6 模块的坑(不知道QT6有没有这种情况),在实例化对象后无法使用对象名当成qss ID,所以qss中的ID选择器才无法生效。

解决办法

  • 解决这个问题的办法其实很简单(真的很头疼,又不报错,上网找了好久才在某个大佬那里看到了这个解决办法,不记得链接是什么了),只需要在实例化对象后指定对象名字就好了。
self.sys_info_label = QtWidgets.QLabel(self, alignment = QtCore.Qt.AlignCenter)
self.sys_info_label.setObjectName('sys_info_label')  # 这里必须设置,否则 qss文件中无法使用ID选择器
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/651976
推荐阅读
相关标签
  

闽ICP备14008679号