如何获得用户当前的系统主题颜色

时间:2019-10-16 06:24:57

标签: python tkinter

hi,我正在研究python gui项目,我发现应用程序框架的颜色取决于用户的系统主题颜色。我希望我的应用程序具有相同的颜色,请问我该如何实现?我的应用程序主要用于Windows,但如果有一种适用于linux的方法,那就更好了。我正在使用tkinter btw。
或者,也许因为我们有了os.system(command),如何从命令行获取颜色?

更新: 我已经尝试过widget styling中列出的输入,但是它们都不起作用,我的系统的主题颜色为light blue

from tkinter import *

if __name__ == '__main__':
    root = Tk()
    root['bg'] = 'SystemButtonFace'  # white
    root['bg'] = 'SystemBackground'  # black
    root['bg'] = 'SystemButtonText'  # black
    root['bg'] = 'SystemAppWorkspace'  # grey
    root['bg'] = 'SystemActiveBorder'  # grey
    root['bg'] = 'SystemActiveCaption'  # light grey
    root['bg'] = 'SystemInactiveCaption'  # light grey
    root['bg'] = 'SystemButtonShadow'  # darker grey
    root['bg'] = 'SystemButtonHighlight'  # white with a bit grey
    root['bg'] = 'SystemCaptionText'  # black
    root['bg'] = 'SystemDisabledText'  # darker grey
    root['bg'] = 'SystemHighlight'  # light dark blue
    root['bg'] = 'SystemHighlightText'  # white
    root['bg'] = 'SystemInactiveBorder'  # white
    root['bg'] = 'SystemInactiveCaptionText'  # black
    root['bg'] = 'SystemMenu'  # white
    root['bg'] = 'SystemMenuText'  # black
    root['bg'] = 'SystemScrollbar'  # grey
    root['bg'] = 'SystemWindow'  # white
    root['bg'] = 'SystemWindowFrame'  # dark grey
    root['bg'] = 'SystemWindowText'  # black

    root.mainloop()

将背景设置为黑色不会将框架设置为黑色,而且我找不到找到浅蓝色的方法
info

2 个答案:

答案 0 :(得分:1)

您必须自己使用自定义的RGB颜色。

使用键'bg'了解您的背景色。

无论如何,如果要实现Tkinter框架的自定义,则可以执行以下操作:

from tkinter import *

root = Tk()

print(root['bg']) # Output: SystemButtonFace
root.configure(bg = '#FF0000') # Configuring new color RED
print(root['bg']) # Output: #FF0000

root.mainloop()

此页面上还有有关tkinter样式的更多信息:

Widget Styling

查看Macintosh和Windows的默认系统颜色的段落。

Linux通常没有系统颜色,因为它通常由黑色命令行管理。

答案 1 :(得分:1)

Tkinter无法更改窗口边框的颜色,也无法获取颜色。您将需要使用其他特定于窗口管理器的库来获取或更改颜色。