【问题标题】:How to make Canvas widget color darker compared to the original color?与原始颜色相比,如何使 Canvas 小部件颜色更深?
【发布时间】:2018-10-22 15:14:56
【问题描述】:

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

canvas = tk.Canvas(root)
canvas.create_rectangle(0,0,50,100, fill='green')

我想把它变暗。所以:

canvas.itemconfig(1, fill=?????)

问题是,我应该在????? 也就是原始颜色的“较深”颜色中添加什么。

当然,我可以找到一个十六进制表示更深的绿色阴影或类似的东西,但重点是:我怎样才能根据原始颜色找到变暗的小部件? p>

如果有类似的东西,我不一定需要找到较暗的颜色版本:canvas.itemconfig(1, darkness=-100)

【问题讨论】:

  • 你试过"darkgreen"吗?看看这个color chart for Tkinter。
  • @Mike-SMT 当然,我可以找到一个更深的绿色阴影的十六进制或使用像“darkgreen”这样的预设,但重点是:我怎样才能找到变暗的小部件基于原始颜色?

标签: python-3.x tkinter colors widget tkinter-canvas


【解决方案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()

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多