更改 QProgressbar() 的颜色 [英] Changing the color of a QProgressbar()

查看:25
本文介绍了更改 QProgressbar() 的颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否可以更改 PyQt 进度条的颜色?

I was wondering whether it's possible to change the color of a PyQt Progressbar?

我有以下代码:

from PyQt4 import QtGui, QtCore
Pbar1 = QtGui.QProgressBar()
Pbar1.setParent(Frame1)
Pbar1.setGeometry(0, 0, 306, 30)
Pbar1.setValue(Frame1Value)
if Pbar1.value == 100
......Pbar1.setColor(Red)

Frame1Value 依赖于一些早期的计算,并且假设从不计算到完全相同的值.

Frame1Value is dependable on some early calculations, and to be assumed never calculates to exactly the same value.

我希望进度条在值为 100 时变为红色"(该值设置为受限,因为进度条不会显示高于 100% 的值),因此给了我一个更好的视觉形象该值为超出约束".

I would like the progressbar to turn 'red' when the value is 100 (which the value is set limited at since a progressbar won't show values above 100%), so giving me a better visual image of the fact that the value is 'out of constraint'.

我知道 .setColor 不是 Progressbar 的已知命令,但它只是为了展示我的想法.

I am aware that .setColor isn't a known command for a Progressbar, but it's just to show my idea.

有谁知道如何做到这一点,或者甚至可能吗??

Does anyone know how to do this, or if it is even possible??

提前谢谢!

推荐答案

你可以继承 QProgressBar 并使用一些样式表请参阅使用样式表自定义 Qt 小部件自定义QProgressBar:

You can sublass QProgressBar and use some style sheet see Customizing Qt Widgets Using Style Sheets and Customizing QProgressBar:

from PyQt4 import QtGui, QtCore

DEFAULT_STYLE = """
QProgressBar{
    border: 2px solid grey;
    border-radius: 5px;
    text-align: center
}

QProgressBar::chunk {
    background-color: lightblue;
    width: 10px;
    margin: 1px;
}
"""

COMPLETED_STYLE = """
QProgressBar{
    border: 2px solid grey;
    border-radius: 5px;
    text-align: center
}

QProgressBar::chunk {
    background-color: red;
    width: 10px;
    margin: 1px;
}
"""

class MyProgressBar(QtGui.QProgressBar):
    def __init__(self, parent = None):
        QtGui.QProgressBar.__init__(self, parent)
        self.setStyleSheet(DEFAULT_STYLE)

    def setValue(self, value):
        QtGui.QProgressBar.setValue(self, value)

        if value == self.maximum():
            self.setStyleSheet(COMPLETED_STYLE)

另一种解决方案是将调色板重新分配给 QProgressBar,这将允许您拥有样式感知"组件:

Another solution would be to reassign a palette to the QProgressBar which will allow you to have a "style aware" component:

class MyProgressBar(QtGui.QProgressBar):
    def setValue(self, value):
        QtGui.QProgressBar.setValue(self, value)
        if value == self.maximum():
            palette = QtGui.QPalette(self.palette())
            palette.setColor(QtGui.QPalette.Highlight, 
                             QtGui.QColor(QtCore.Qt.red))
            self.setPalette(palette)

这篇关于更改 QProgressbar() 的颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆