我有一个带有绿色矩形的画布小部件:
| ID | Name | Cost | Cost2 | Info1 | Info2 |
|-------|----------|---------|---------|-----------|-----------|
| 1 | Name1 | 20 | 50 | text1 | text1 |
| 1 | Name1 | NULL | NULL | text1 | text1 |
| 1 | Name1 | NULL | NULL | text1 | text1 |
| 2 | Name2 | 30 | 10 | text21 | text21 |
| 2 | Name2 | NULL | NULL | text22 | text22 |
| 2 | Name2 | NULL | NULL | text23 | text23 |
| 2 | Name2 | NULL | NULL | text24 | text24 |
| 2 | Name22 | 30 | 40 | text21 | text21 |
| 2 | Name22 | NULL | NULL | text22 | text22 |
| 2 | Name22 | NULL | NULL | text23 | text23 |
| 2 | Name22 | NULL | NULL | text24 | text24 |
我想使它变暗。所以:
canvas = tk.Canvas(root)
canvas.create_rectangle(0,0,50,100, fill='green')
问题是,我应该将canvas.itemconfig(1, fill=?????)
(又称原始颜色的“较暗”颜色)放在什么位置。
当然,我只能找到一个十六进制的绿色或更深的阴影,但要点是:如何根据原始颜色找到变暗的小部件? >
如果出现类似?????
之类的颜色,我不一定需要找到较暗的颜色。
答案 0 :(得分:1)
这是一个简单的示例,说明如何使用函数将RGB元组转换为十六进制来降低颜色。我们从浅绿色开始,每按一次按钮,颜色就会变深。这是一个简单的示例,但是我相信您可以根据需要进行调整。
import tkinter as tk
root = tk.Tk()
cv = (110, 160, 50)
canvas = tk.Canvas(root)
rect = canvas.create_rectangle(0,0,50,100, fill="#%02x%02x%02x" % cv)
canvas.pack()
def darker():
global cv
greater = True
cv = (cv[0]- 10, cv[1] - 10, cv[2] - 10)
for item in cv:
if item < 0:
greater = False
if greater == True:
canvas.itemconfig(rect, fill = "#%02x%02x%02x" % cv)
tk.Button(root, text="Darker", command=darker).pack()
root.mainloop()
或者您可以通过将当前的首选连接与format()
一起使用:
import tkinter as tk
root = tk.Tk()
cv = (110, 160, 50)
canvas = tk.Canvas(root)
rect = canvas.create_rectangle(0,0,50,100, fill = "#{}".format("".join("{:02X}".format(a) for a in cv)))
canvas.pack()
def darker():
global cv
greater = True
cv = (cv[0]- 10, cv[1] - 10, cv[2] - 10)
for item in cv:
if item < 0:
greater = False
if greater == True:
canvas.itemconfig(rect, fill = "#{}".format("".join("{:02X}".format(a) for a in cv)))
tk.Button(root, text="Darker", command=darker).pack()
root.mainloop()