使用 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_())
我在使用 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_())