采用Pyside2的拾色器和展示台

时间:2018-02-28 18:20:42

标签: python pyside2 qcolordialog

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

我已经完成了这样的颜色选择器:

color = QtWidgets.QColorDialog.getColor()

但我不知道如何制作正方形(它应该是标签?)并用所选颜色对其进行着色。

1 个答案:

答案 0 :(得分:1)

如果您可以使用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样式表:

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_())