我想找到HEX格式的窗口背景色。寻找适用于所有平台的解决方案... Windows / Linux / Mac ...
以下代码print (self.cget('bg'))
仅显示SystemButtonFace
,但我想获取实际的十六进制格式。原因是我需要使用这种颜色作为基础来创建新的稍深的颜色阴影。
答案 0 :(得分:1)
所有小部件上的winfo_rgb
方法将接受颜色名称,并将r,g和b分量作为整数返回,范围为0-65535(16位)。然后,您可以使用标准python字符串格式将其转换为十六进制。
答案 1 :(得分:0)
感谢布莱恩·奥克利(Bryan Oakley)的回答,他写了这种方法:
def get_widget_hex_color_by_known_name(w, knwon_system_color):
"""
w is a tkinter widget i.e. tk.Button() or self
knwon_system_color can be any known color name like white, green, SystemButtonFace
"""
rgb = w.winfo_rgb(knwon_system_color)
r,g,b=[x>>8 for x in rgb]
return '#{:02x}{:02x}{:02x}'.format(r,g,b)
请注意,self.cget('bg')
在Windows上返回类似于SystemButtonFace
的内容,但在Linux上实际上返回十六进制颜色代码。
因此,如果self.cget('bg')
调用未返回十六进制颜色代码(以#开头的字符串长度7),则仅需要调用上述函数。