使用 Pyside2 的颜色选择器和可视化器

Color Picker and Visualizer with Pyside2

我在使用 pyside2 时遇到问题。我需要实现一个颜色选择器,当我选择一种颜色时,将该颜色可视化为一个小方块。

我是这样完成颜色选择器的:

color = QtWidgets.QColorDialog.getColor()

但我不知道如何制作正方形(应该是标签?)并用选定的颜色给它上色。

如果可以使用 QLabel,更改背景颜色 QPalette 使用:

from PySide2 import QtWidgets, QtGui, QtCore

class Widget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)
        lay = QtWidgets.QVBoxLayout(self)
        button = QtWidgets.QPushButton("Select color")
        button.clicked.connect(self.on_clicked)
        self.label = QtWidgets.QLabel()
        self.label.setAutoFillBackground(True)
        self.label.setFixedSize(100, 100)

        lay.addWidget(button)
        lay.addWidget(self.label)

    def on_clicked(self):
        color = QtWidgets.QColorDialog.getColor()
        if color.isValid():
            palette = self.label.palette()
            palette.setColor(QtGui.QPalette.Background, color)
            self.label.setPalette(palette)

if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

或者使用Qt风格Sheet:

from PySide2 import QtWidgets, QtGui, QtCore

class Widget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)
        lay = QtWidgets.QVBoxLayout(self)
        button = QtWidgets.QPushButton("Select color")
        button.clicked.connect(self.on_clicked)
        self.label = QtWidgets.QLabel()
        self.label.setFixedSize(100, 100)

        lay.addWidget(button)
        lay.addWidget(self.label)

    def on_clicked(self):
        color = QtWidgets.QColorDialog.getColor()
        if color.isValid():
            self.label.setStyleSheet("background-color: {}".format(color.name()))

if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())