如何使用PyQt简单显示QColor?

3 投票
2 回答
13581 浏览
提问于 2025-04-16 09:34

我有一个QColor对象,是通过QColorDialog.getColor()获取的颜色。

我想在一个表单中把这个颜色展示给用户。

我该怎么做呢?

我尝试使用QGraphicView,并像这样设置背景画刷:

    self.displayColor = QtGui.QGraphicView(self)
    self.color = QtGui.QColor(category.color)
    self.displayColor.setBackgroundBrush(QtGui.QBrush(self.color))

但是即使我改变了背景画刷,那个小部件还是保持白色。

我该怎么强制它重新绘制背景呢?

谢谢!

2 个回答

4

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让我们的程序能够顺利运行,我们需要确保这些数据是有效的,也就是说,它们符合我们预期的格式和类型。

例如,如果我们希望用户输入一个数字,但用户却输入了字母,这样的数据就不符合我们的要求。为了避免这种情况,我们可以使用一些方法来验证数据的有效性。这就像是给数据设置了一些规则,只有符合这些规则的数据才能通过。

在编程中,验证数据的过程通常被称为“数据验证”。这一步非常重要,因为它可以帮助我们避免程序出错,确保程序的稳定性和安全性。

总之,数据验证就是确保我们处理的数据是正确的,符合我们需要的标准,这样才能让程序正常工作。

s=QGraphicsScene()
s.setBackgroundBrush(QColor(0,255,0))
g=QGraphicsView(s)
g.render(QPainter())
4

最后,我决定创建一个这样的组件:

# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore

class ColorDisplay(QtGui.QWidget):
    def __init__(self, parent):
        super(ColorDisplay, self).__init__(parent)

        self.color = None

    def setColor(self, color):
        self.color = QtGui.QColor(color)
        self.update()

    def paintEvent(self, event=None):
        painter = QtGui.QPainter(self)
        if self.color is not None:
            painter.setBrush(QtGui.QBrush(self.color))
            painter.drawRect(self.rect())

    def getColorName(self):
        return unicode(self.color.name())

我可以通过 setColor() 来改变颜色。

撰写回答