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_hsv(self):
self.assertEqual(tkf.rgb_to_hsv(255, 0, 0), (0, 100, 100))
self.saturation.set(s)
self.value.set(v)
self.bar.set(h)
self.square.set_hsv((h, s, v))
if self.alpha_channel:
a = self.alpha.get()
self.hexa.insert('end', ("%2.2x" % a).upper())
self.alphabar.set_color((r, g, b, a))
elif self.alpha_channel and re.match(r"^#[0-9A-F]{8}$", color):
r, g, b, a = hexa_to_rgb(color)
self.red.set(r)
self.green.set(g)
self.blue.set(b)
self.alpha.set(a)
self.alphabar.set_color((r, g, b, a))
h, s, v = rgb_to_hsv(r, g, b)
self.hue.set(h)
self.saturation.set(s)
self.value.set(v)
self.bar.set(h)
self.square.set_hsv((h, s, v))
else:
self._update_color_rgb()
self._update_preview()
"""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()
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()
bg = create_checkered_image(width, height)
r, g, b = color
w = width - 1.
gradient = Image.new("RGBA", (width, height))
for i in range(width):
for j in range(height):
gradient.putpixel((i, j), (r, g, b, round2(i / w * 255)))
self.gradient = ImageTk.PhotoImage(Image.alpha_composite(bg, gradient),
master=self)
self.create_image(0, 0, anchor="nw", tags="gardient",
image=self.gradient)
self.lower("gradient")
x = alpha / 255. * width
h, s, v = rgb_to_hsv(r, g, b)
if v < 50:
fill = "gray80"
else:
fill = 'black'
self.create_line(x, 0, x, height, width=2, tags='cursor', fill=fill)
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)
frame.rowconfigure(1, weight=1)
# --- color preview: initial color and currently selected color side by side
preview_frame = ttk.Frame(frame, relief="groove", borderwidth=2)
preview_frame.grid(row=0, column=0, sticky="nw", pady=2)
if alpha:
self._transparent_bg = create_checkered_image(42, 32)
transparent_bg_old = create_checkered_image(42, 32,
(100, 100, 100, 255),
(154, 154, 154, 255))
prev_old = overlay(transparent_bg_old, hexa_to_rgb(old_color))
def set_rgb(self, sel_color):
"""
Put cursor on sel_color given in RGB.
:param sel_color: color in RBG format
:type sel_color: sequence(int)
"""
width = self.winfo_width()
height = self.winfo_height()
h, s, v = rgb_to_hsv(*sel_color)
self.set_hue(h)
x = v / 100.
y = (1 - s / 100.)
self.coords('cross_h', 0, y * height, width, y * height)
self.coords('cross_v', x * width, 0, x * width, height)