Advertisement
here2share

# tk_rgb_square.py

Aug 11th, 2021 (edited)
1,211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | None | 0 0
  1. # tk_rgb_square.py
  2.  
  3. import tkinter as tk
  4. import math
  5.  
  6. root = tk.Tk()
  7. root.title("RGB Color Square")
  8. root.geometry("+0+0")
  9.  
  10. frame = tk.Frame(root)
  11. frame.grid(row=0, column=0, sticky="nsew")
  12.  
  13. step = 4
  14. colors_per_channel = 256 / step
  15. total_colors = colors_per_channel ** 3
  16. side_length = total_colors ** 0.5
  17.  
  18. canvas_width = canvas_height = side_length
  19. canvas = tk.Canvas(frame, width=side_length, height=side_length, bg="white",
  20.                   scrollregion=(0, 0, side_length, side_length))
  21. canvas.grid(row=0, column=0, sticky="nsew")
  22.  
  23. x_scroll = tk.Scrollbar(frame, orient=tk.HORIZONTAL, command=canvas.xview)
  24. x_scroll.grid(row=1, column=0, sticky="ew")
  25. y_scroll = tk.Scrollbar(frame, orient=tk.VERTICAL, command=canvas.yview)
  26. y_scroll.grid(row=0, column=1, sticky="ns")
  27.  
  28. canvas.configure(xscrollcommand=x_scroll.set, yscrollcommand=y_scroll.set)
  29.  
  30. def populate_colors():
  31.     i = 0
  32.     for r in range(0, 256, step):
  33.         for g in range(0, 256, step):
  34.             y = i // side_length
  35.             for b in range(0, 256, step):
  36.                 x = i % side_length
  37.                 color = f"#{r:02x}{g:02x}{b:02x}"
  38.                 canvas.create_rectangle(x, y, x+1, y+1, fill=color, outline="")
  39.                 i += 1
  40.     canvas.config(scrollregion=canvas.bbox("all"))
  41.  
  42. populate_colors()
  43.  
  44. canvas.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement