Python Tkinter小部件和/或系统默认颜色

Python Tkinter小部件和/或系统默认颜色,python,tkinter,Python,Tkinter,我正在尝试实现一个tkinter小部件,该小部件具有与列表框类似的(最低)功能,但允许多行输入。 基本上,它继承自框架,管理自己的滚动行为,并且每个项目都是该框架内的消息 为了给它一个合理的外观和感觉,当点击一个项目时,我希望它像用户期望的那样突出显示 对于此类任务,是否有一种使用系统/小部件默认颜色的好方法? 我发现这对我来说意味着,系统颜色依赖于平台。对吗?或者有没有一种方法可以独立地引用“普通高光颜色”操作系统 或者我应该手动实现颜色,这在我正在开发的系统上可能看起来不错,但在其他系统上很

我正在尝试实现一个tkinter小部件,该小部件具有与
列表框类似的(最低)功能,但允许多行输入。
基本上,它继承自
框架
,管理自己的滚动行为,并且每个项目都是该框架内的
消息

为了给它一个合理的外观和感觉,当点击一个项目时,我希望它像用户期望的那样突出显示

对于此类任务,是否有一种使用系统/小部件默认颜色的好方法?
我发现这对我来说意味着,系统颜色依赖于平台。对吗?或者有没有一种方法可以独立地引用“普通高光颜色”操作系统


或者我应该手动实现颜色,这在我正在开发的系统上可能看起来不错,但在其他系统上很可能看起来很难看,或者至少不是有机的?

最简单的解决方案是创建一个临时列表框,然后让tkinter告诉您它使用的颜色

listbox = tk.Listbox(root)
colors = {attr: listbox.cget(attr) for attr in (
    "background", "foreground", "disabledforeground",
    "highlightbackground", "highlightcolor",
    "selectbackground", "selectforeground"
)}
以上内容将生成列表框使用的颜色选项字典。在我的OSX盒上,它返回如下内容:

{
    'background': 'systemTextBackgroundColor',
    'disabledforeground': '#a3a3a3',
    'foreground': 'systemTextColor',
    'highlightbackground': 'systemWindowBackgroundColor',
    'highlightcolor': 'Black',
    'selectbackground': 'systemSelectedTextBackgroundColor',
    'selectforeground': 'systemSelectedTextColor'
}

最简单的解决方案是创建一个临时列表框,然后让tkinter告诉您它使用的颜色

listbox = tk.Listbox(root)
colors = {attr: listbox.cget(attr) for attr in (
    "background", "foreground", "disabledforeground",
    "highlightbackground", "highlightcolor",
    "selectbackground", "selectforeground"
)}
以上内容将生成列表框使用的颜色选项字典。在我的OSX盒上,它返回如下内容:

{
    'background': 'systemTextBackgroundColor',
    'disabledforeground': '#a3a3a3',
    'foreground': 'systemTextColor',
    'highlightbackground': 'systemWindowBackgroundColor',
    'highlightcolor': 'Black',
    'selectbackground': 'systemSelectedTextBackgroundColor',
    'selectforeground': 'systemSelectedTextColor'
}

你当然可以为所有平台创建颜色,只需检查你在哪个平台上(我不知道怎么做,但谷歌可能有答案)。你也不能使用
Text
widget(它支持多行输入)?我希望避免手动操作系统检查,所以我想我会先尝试下面的答案。如果我觉得受到
消息
的限制,我可以使用
文本
,但我的用例甚至可能不需要。但是谢谢你的提示,我到目前为止还没有考虑过。你当然可以为所有平台创建颜色,然后检查你在哪个平台上(我不知道怎么做,但谷歌可能有答案)。你也不能使用
Text
widget(它支持多行输入)?我希望避免手动操作系统检查,所以我想我会先尝试下面的答案。如果我觉得受到
消息
的限制,我可以使用
文本
,但我的用例甚至可能不需要。但是谢谢你的提示,我到目前为止还没有考虑过。