colorpicker.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import tkinter as tk
  2. def r():
  3. canvas=tk.Canvas(xframe,width=600,height=100)
  4. canvas["bg"] = "yellow" #"green"
  5. canvas.pack()
  6. # RGB
  7. x=0
  8. y=0
  9. j=0
  10. d = 20
  11. f = 255 #255-fi
  12. e = 5
  13. for r in range(0,d+1):
  14. fi = int(r*255/d)
  15. color = '#%02x%02x%02x' % (f, fi, fi)
  16. print( "farbe", r*10, j, f,fi,fi,color)
  17. r = canvas.create_rectangle(x, y, x+20, y+20, fill=color)
  18. x+=20
  19. def hex_to_rgb(hex):
  20. return tuple(int(hex[i:i+2], 16) for i in (0, 2, 4))
  21. class cb():
  22. def __init__(self,win):
  23. self.win = win
  24. def _callback(self,event):
  25. clobj=event.widget
  26. ## undermouse=find_withtag(master.CURRENT)
  27. undermouse=self.win.find_closest(self.win.CURRENT)
  28. print( repr(undermouse))
  29. def callback(self,event):
  30. cnv = self.win
  31. item = cnv.find_closest(cnv.canvasx(event.x), cnv.canvasy(event.y))[0]
  32. tags = cnv.gettags(item)
  33. #cnv.itemconfigure(self.tag, text=tags[0])
  34. print(tags,item)
  35. color = cnv.itemcget(item, "fill")
  36. cnv.itemconfig("all", width=1)#filla="green")
  37. cnv.itemconfig(item, width=3)#filla="green")
  38. print(color)
  39. print( hex_to_rgb(color[1:]))
  40. def colorpicker(xframe,width=600,height=100):
  41. canvas=tk.Canvas(xframe,width=width,height=height)
  42. canvas["bg"] = "grey" #"green"
  43. callback = cb(canvas)
  44. #canvas.bind("<Key>", key)
  45. canvas.bind("<Button-1>", callback.callback)
  46. canvas.pack()
  47. x=2
  48. y=2
  49. d = 3
  50. r=0
  51. g=1
  52. b=1
  53. mode = 0
  54. count = 0
  55. while 1:
  56. print("-",[r,g,b],mode)
  57. for xx in range(d,0,-1):
  58. fi = int(xx*255/d)
  59. print(xx,y)
  60. print(fi,end=" ")
  61. color = '#%02x%02x%02x' % (int(255-r*fi),int(255-g*fi),int(255-b*fi))
  62. canvas.create_rectangle(x, y, x+20, y+20, fill=color)
  63. y+=22
  64. color = '#%02x%02x%02x' % (255,255,255)
  65. canvas.create_rectangle(x, y, x+20, y+20, fill=color)
  66. print()
  67. if count == 1 and mode == 3:
  68. print("-------")
  69. break
  70. y=2
  71. x+=22
  72. if r >= 1 and g >= 1 and b <= 0:
  73. mode = 1
  74. elif r <= 0 and g >= 1 and b <= 0:
  75. mode = 2
  76. elif r <= 0 and g >= 1 and b >= 1:
  77. mode = 3
  78. elif r <= 0 and g <= 0 and b >= 1:
  79. mode = 4
  80. elif r >= 1 and g <= 0 and b >= 1:
  81. mode = 5
  82. elif r >= 1 and g <= 0 and b <= 0:
  83. mode = 6
  84. count +=1
  85. s = 0.25 # 1/d #0.25
  86. if mode == 1:
  87. r -= s#0.25
  88. if mode == 2:
  89. b += s#0.25
  90. if mode == 3:
  91. g -= s#0.25
  92. if mode == 4:
  93. r += s#0.25
  94. if mode == 5:
  95. b -= s#0.25
  96. if mode == 6:
  97. g += s#0.25
  98. if r > 1:
  99. r=1
  100. if g > 1:
  101. g=1
  102. if b > 1:
  103. b=1
  104. if r < 0:
  105. r=0
  106. if g < 0:
  107. g=0
  108. if b < 0:
  109. b=0
  110. if __name__ == "__main__":
  111. xframe = tk.Tk()
  112. xframe.geometry("1600x600")
  113. r()
  114. colorpicker(xframe)
  115. xframe.mainloop()