我遇到了pyside2的问题。我需要实现一个颜色选择器,当我选择颜色时,将颜色可视化为一个小方块。
我已经完成了这样的颜色选择器:
color = QtWidgets.QColorDialog.getColor()
但我不知道如何制作正方形(它应该是标签?)并用所选颜色对其进行着色。
答案 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_())