You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅修改PyQt5部件背景色?解决Fusion样式失焦变色问题

PyQt5 Fusion样式下进度条失焦后变色问题及解决困惑

使用PyQt5的Fusion样式时,窗口失去焦点后,QProgressBar的蓝色进度块会变为白色,希望能始终保持蓝色。尝试两种样式设置方式均存在问题:

  • 通过app.setStyleSheet("QProgressBar::chunk { background-color : blue}")全局设置进度块颜色时,进度条的文本不再居中,还出现其他异常;
  • 通过self.pbar.setStyleSheet("background-color : blue")给单个进度条设置样式时,能保持文本居中,但不知道如何单独对进度块(chunk元素)进行样式设置。

以下是测试脚本:

import sys
import time
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QWidget, QPushButton, QProgressBar, QVBoxLayout, QApplication

class Thread(QThread):
    _signal = pyqtSignal(int)
    def __init__(self):
        super(Thread, self).__init__()

    def __del__(self):
        self.wait()

    def run(self):
        for i in range(100):
            time.sleep(0.1)
            self._signal.emit(i)

class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.setWindowTitle('QProgressBar')
        self.btn = QPushButton('Click me')
        self.btn.clicked.connect(self.btnFunc)
        self.pbar = QProgressBar(self)
        self.pbar.setValue(0)
        self.resize(300, 100)
        self.vbox = QVBoxLayout()
        self.vbox.addWidget(self.pbar)
        self.vbox.addWidget(self.btn)
        self.setLayout(self.vbox)
        self.show()

    def btnFunc(self):
        self.thread = Thread()
        self.thread._signal.connect(self.signal_accept)
        self.thread.start()
        self.btn.setEnabled(False)

    def signal_accept(self, msg):
        self.pbar.setValue(int(msg))
        if self.pbar.value() == 99:
            self.pbar.setValue(0)
            self.btn.setEnabled(True)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setStyle("Fusion") ##### 窗口失去焦点时,进度条会从蓝色变为白色
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

窗口获得焦点时效果:
窗口获焦时的进度条

窗口失去焦点时效果:
窗口失焦时的进度条

内容的提问来源于stack exchange,提问作者David Rouyre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:15:36