python-3.x - 与原始颜色相比,如何使 Canvas 小部件颜色更深?
问题描述
我有这个带有绿色矩形的画布小部件:
canvas = tk.Canvas(root)
canvas.create_rectangle(0,0,50,100, fill='green')
我想把它变暗。所以:
canvas.itemconfig(1, fill=?????)
问题是,我应该?????
在原始颜色的“深色”颜色中添加什么。
当然,我可以为较深的绿色或类似的东西找到一个十六进制,但重点是:如何根据原始颜色找到变暗的小部件?
如果有类似的东西,我不一定需要找到较暗的颜色版本:canvas.itemconfig(1, 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()
或者,您可以使用当前的首选连接来执行此操作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()
推荐阅读
- git - 如何挑选提交 OUT
- angular - 角度传递组件到组件作为参数
- oracle - Pragma UDF 是如何工作的?
- javascript - Outlook JS 加载项:使用 Ajax 和回调令牌的 EWS 调用
- vba - " 从 MS Word 表中提取单词时添加到字符串的开头
- regex - Regexmatch syntax for Google Sheets
- css - Bootstrap 4 Carousel how to get controls in slide and responsive
- html - Position and Size
- php - A Database Error Occurred Error Number: 1054 Unknown column 'Array' in 'where clause'
- javascript - 2000 年 1 月 1 日 20:00:00 只有时间 - Javascript