获取当前 tk 调色板的颜色代码

Getting color codes of the current tk palette

在 tkinter 中,是否可以获取当前使用的调色板的颜色,以便我可以使用它们,例如在 canvas?

上绘制矩形时
import tkinter as tk
root = tk.Tk()
root.tk_bisque() # change the palette to bisque
canvas = tk.Canvas(root, width=500, height=500)
canvas.create_rectangle(10, 10, 100, 100, fill='???') # What to enter here?

我知道我可以使用例如'bisque' 作为颜色名称,但是 documentation 表示包含 'activeBackground'、'highlightColor' 等条目的数据库。我想知道如何将这些用作我的 canvas 项目的颜色,或者只是如何在运行时获取它们的 rgb 值。

您可以使用 root.option_get(name, '.') 获取小部件的默认颜色:

import tkinter as tk
root = tk.Tk()
root.tk_bisque() # change the palette to bisque
print(root.option_get('background', '.'))
print(root.option_get('activeBackground', '.'))
print(root.option_get('foreground', '.'))
print(root.option_get('highlightColor', '.'))

给予

#ffe4c4
#e6ceb1
black
black

如果您需要特定小部件 class 的颜色,请将 '.' 替换为 class 名称。如评论中所述,如果您需要颜色的 RGB 值,则可以使用 root.winfo_rgb(color),其中 color 为 HEX 格式或 tkinter 预定义颜色之一,例如黑色,...(您可以找到一个列表 here 例如)。

但是,在我的电脑上(我使用的是 Linux,我不知道在所有平台上的行为是否相同)它只有在将配色方案设置为 bisque 后才能使用,默认颜色计划它总是 return ''.