如何创建“色环"在 PyQt 中? [英] How to create a "Color Circle" in PyQt?
本文介绍了如何创建“色环"在 PyQt 中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建一个看起来像这样的 QWidget/QDialog:
I would like to create a QWidget/QDialog that looks like this:
Color Circle
or:
Windows Color Picker
I am aware of QColorDialog
, but i do not want to use it.
解决方案
from PyQt5 import QtWidgets, QtCore, QtGui
import sys
import numpy as np
class ColorCircle(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.radius = 100.
self.setFixedSize(200, 200)
def paintEvent(self, ev):
super().paintEvent(ev)
p = QtGui.QPainter(self)
for i in range(self.width()):
for j in range(self.height()):
color = QtGui.QColor(255, 255, 255, 255)
h = (np.arctan2(i-self.radius, j-self.radius)+np.pi)/(2.*np.pi)
s = np.sqrt(np.power(i-self.radius, 2)+np.power(j-self.radius, 2))/self.radius
v = 1.0
if s < 1.0:
color.setHsvF(h, s, v, 1.0)
p.setPen(color)
p.drawPoint(i, j)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = ColorCircle()
w.show()
app.exec()
Output:
这篇关于如何创建“色环"在 PyQt 中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文