Python 3.x 如何使画布小部件的颜色比原始颜色更暗?

Python 3.x 如何使画布小部件的颜色比原始颜色更暗?,python-3.x,tkinter,colors,widget,tkinter-canvas,Python 3.x,Tkinter,Colors,Widget,Tkinter Canvas,我有一个绿色矩形的画布小部件: canvas = tk.Canvas(root) canvas.create_rectangle(0,0,50,100, fill='green') 我想把它调暗。因此: canvas.itemconfig(1, fill=?????) 问题是,我应该在里面放什么???????又名原始颜色的“较暗”颜色 当然,我可以找到一个十六进制的深绿色或类似的东西,但问题是:我怎样才能找到基于原始颜色的小部件变暗 如果有canvas.itemconfig1,darknes

我有一个绿色矩形的画布小部件:

canvas = tk.Canvas(root)
canvas.create_rectangle(0,0,50,100, fill='green')
我想把它调暗。因此:

canvas.itemconfig(1, fill=?????)
问题是,我应该在里面放什么???????又名原始颜色的“较暗”颜色

当然,我可以找到一个十六进制的深绿色或类似的东西,但问题是:我怎样才能找到基于原始颜色的小部件变暗


如果有canvas.itemconfig1,darkness=-100这样的颜色,我不一定需要找到颜色的较暗版本。

下面是一个简单的示例,说明如何使用函数根据转换为十六进制的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()

你试过黑绿色吗?请看一下Tkinter的图片。@Mike SMT当然,我可以找到一个深绿色的十六进制,或者使用像darkgreen这样的预设,但问题是:我如何才能找到基于原始颜色的小部件的深绿色?
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()