嗨我正在开发一个 python gui 项目,我发现我的应用程序框架的颜色取决于用户的系统主题颜色。我希望我的应用程序具有相同的颜色,我可以知道如何实现吗?我的应用程序主要适用于 Windows,但如果有一种适用于 Linux 的方法那就太好了。顺便说一句,我正在使用 tkinter。
或者也许如何从命令行获取颜色,因为我们有
os.system(command)
?
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()
Tkinter 无法更改窗口边框的颜色,也无法获取颜色。 您将需要使用特定于您的窗口管理器的其他库来获取或更改颜色。
您必须自己使用自定义的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 样式的信息:
查看 Macintosh 和 Windows 的默认系统颜色段落。
Linux 可能没有系统颜色,因为它通常由黑色命令行管理。
您可以使用 winaccent 来做到这一点,这是我为检索强调色、色调、活动/非活动标题栏颜色和窗口边框颜色而制作的 Python 模块。
您可以使用以下命令安装它:
pip install winaccent
然后,您可以像这样更改 tkinter 应用程序的背景颜色:
import tkinter, winaccent
root = tkinter.Tk()
# Check if the titlebar is colored
if winaccent.is_titlebar_colored:
root.configure(bg = winaccent.titlebar_active)
else:
root.configure(bg = "SystemButtonFace")
root.mainloop()
如果在“设置”中启用“在标题栏和窗口边框上显示强调色”选项,您的窗口将如下所示this。
如果没有,它会看起来像这个。
如果您想了解该模块的更多功能,可以阅读文档这里。