Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_rgb_to_hexa(self):
self.assertEqual(tkf.rgb_to_hexa(255, 255, 255), "#FFFFFF")
self.assertEqual(tkf.rgb_to_hexa(255, 255, 255, 255), "#FFFFFFFF")
self.assertRaises(ValueError, tkf.rgb_to_hexa, 255, 255)
def test_rgb_to_hexa(self):
self.assertEqual(tkf.rgb_to_hexa(255, 255, 255), "#FFFFFF")
self.assertEqual(tkf.rgb_to_hexa(255, 255, 255, 255), "#FFFFFFFF")
self.assertRaises(ValueError, tkf.rgb_to_hexa, 255, 255)
def get(self):
"""
Get selected color.
:return: color under cursor as a (RGB, HSV, HEX) tuple
"""
x = self.coords('cross_v')[0]
y = self.coords('cross_h')[1]
xp = min(x, self.bg.width() - 1)
yp = min(y, self.bg.height() - 1)
try:
r, g, b = self.bg.get(round2(xp), round2(yp))
except ValueError:
r, g, b = self.bg.get(round2(xp), round2(yp)).split()
r, g, b = int(r), int(g), int(b)
hexa = rgb_to_hexa(r, g, b)
h = self.get_hue()
s = round2((1 - float(y) / self.winfo_height()) * 100)
v = round2(100 * float(x) / self.winfo_width())
return (r, g, b), (h, s, v), hexa
def _palette_cmd(self, event):
"""Respond to user click on a palette item."""
label = event.widget
label.master.focus_set()
label.master.configure(relief="sunken")
r, g, b = self.winfo_rgb(label.cget("background"))
r = round2(r * 255 / 65535)
g = round2(g * 255 / 65535)
b = round2(b * 255 / 65535)
args = (r, g, b)
if self.alpha_channel:
a = self.alpha.get()
# a = self.get_color_value(self.alpha)
args += (a,)
self.alphabar.set_color(args)
color = rgb_to_hexa(*args)
h, s, v = rgb_to_hsv(r, g, b)
self.red.set(r)
self.green.set(g)
self.blue.set(b)
self.hue.set(h)
self.saturation.set(s)
self.value.set(v)
self.hexa.delete(0, "end")
self.hexa.insert(0, color.upper())
self.bar.set(h)
self.square.set_hsv((h, s, v))
self._update_preview()
"""Create the gradient."""
r, g, b = hue2col(self._hue)
width = self.winfo_width()
height = self.winfo_height()
h = float(height - 1)
w = float(width - 1)
if height:
c = [(r + i / h * (255 - r), g + i / h * (255 - g), b + i / h * (255 - b)) for i in range(height)]
data = []
for i in range(height):
line = []
for j in range(width):
rij = round2(j / w * c[i][0])
gij = round2(j / w * c[i][1])
bij = round2(j / w * c[i][2])
color = rgb_to_hexa(rij, gij, bij)
line.append(color)
data.append("{" + " ".join(line) + "}")
self.bg.put(" ".join(data))
col = self.winfo_rgb(color)
self._old_color = tuple(round2(c * 255 / 65535) for c in col)
args = self._old_color
if alpha:
self._old_alpha = 255
args = self._old_color + (255,)
old_color = rgb_to_hexa(*args)
else:
self._old_color = color[:3]
if alpha:
if len(color) < 4:
color += (255,)
self._old_alpha = 255
else:
self._old_alpha = color[3]
old_color = rgb_to_hexa(*color)
# --- GradientBar
hue = col2hue(*self._old_color)
bar = ttk.Frame(self, borderwidth=2, relief='groove')
self.bar = GradientBar(bar, hue=hue, width=200, highlightthickness=0)
self.bar.pack()
# --- ColorSquare
square = ttk.Frame(self, borderwidth=2, relief='groove')
self.square = ColorSquare(square, hue=hue, width=200, height=200,
color=rgb_to_hsv(*self._old_color),
highlightthickness=0)
self.square.pack()
frame = ttk.Frame(self)
frame.columnconfigure(1, weight=1)
def _update_color_rgb(self, event=None):
"""Update display after a change in the RGB spinboxes."""
if event is None or event.widget.old_value != event.widget.get():
r = self.red.get()
g = self.green.get()
b = self.blue.get()
h, s, v = rgb_to_hsv(r, g, b)
self.hue.set(h)
self.saturation.set(s)
self.value.set(v)
args = (r, g, b)
if self.alpha_channel:
args += (self.alpha.get(),)
self.alphabar.set_color(args)
hexa = rgb_to_hexa(*args)
self.hexa.delete(0, "end")
self.hexa.insert(0, hexa)
self.square.set_hsv((h, s, v))
self.bar.set(h)
self._update_preview()
def _update_color_hsv(self, event=None):
"""Update display after a change in the HSV spinboxes."""
if event is None or event.widget.old_value != event.widget.get():
h = self.hue.get()
s = self.saturation.get()
v = self.value.get()
sel_color = hsv_to_rgb(h, s, v)
self.red.set(sel_color[0])
self.green.set(sel_color[1])
self.blue.set(sel_color[2])
if self.alpha_channel:
sel_color += (self.alpha.get(),)
self.alphabar.set_color(sel_color)
hexa = rgb_to_hexa(*sel_color)
self.hexa.delete(0, "end")
self.hexa.insert(0, hexa)
self.square.set_hsv((h, s, v))
self.bar.set(h)
self._update_preview()