PySide6如何编辑QProgressBar样式表 解决颜色设置仅文字生效问题
PySide6中QProgressBar进度条颜色自定义失效问题
问题现象
开发PySide6应用时,QProgressBar组件仅文字颜色可通过样式表正常修改,进度条背景、已加载进度部分的颜色设置不生效。相同样式表配置在Qt Creator中预览可正常显示预期效果。
运行环境
Python: 3.9 PySide6 QT Creator: 7.0.2
复现代码
import sys from PySide6 import QtWidgets class MyWidget(QtWidgets.QWidget): def __init__(self): super().__init__() self.progress = QtWidgets.QProgressBar(self) self.progress.setObjectName(u"progress") self.progress.setValue(80) self.progress.setStyleSheet("color: red;\n" "background-color: blue;\n" "selection-background-color: yellow;") self.progress.repaint() if __name__ == "__main__": app = QtWidgets.QApplication([]) widget = MyWidget() widget.resize(200, 80) widget.show() sys.exit(app.exec())
正确配置方法
Qt6版本的QSS解析规则对QProgressBar的子控件选择器要求更严格,旧写法中用selection-background-color设置进度块颜色的逻辑不再兼容,必须显式指定::chunk子控件的样式才能修改已加载进度部分的颜色,正确样式表示例如下:
self.progress.setStyleSheet(""" QProgressBar { color: red; background-color: blue; border: 1px solid #888; text-align: center; border-radius: 2px; } QProgressBar::chunk { background-color: yellow; border-radius: 2px; } """)
Qt Creator内置的样式预览兼容部分旧版QSS写法,和PySide6绑定的Qt6实际运行时的解析逻辑存在差异,涉及QProgressBar、QScrollBar这类带子控件的组件时,建议显式写出对应子控件的选择器配置,避免样式失效。
内容的提问来源于stack exchange,提问作者morisummer
相关产品推荐
相关产品推荐

