更改 ttk.Notebook 中“标签页眉”的颜色

新手上路,请多包涵

问候!

我想更改使用 ttk.Notebook 创建的选项卡标题中显示的颜色。经过一段时间的搜索,我发现要改变 ttk 小部件的样式,我们可以使用 ttk.样式,因为 Notebook 显然没有配置选项来更改其颜色。但是,我只找到了如何更改 NoteBook 对象的背景和前景,但没有找到如何配置“选项卡标题”,其背景为白色(选中时)或灰色(未选中时)。

任何人都可以帮助我吗?

这是我现在拥有的代码,与我正在尝试做的事情相关

import Tkinter as tki
import ttk

...
##Other code. Not relevant here
...

#create tabs and associate the apropriate frames to it
tabs = ttk.Notebook(parent.master)
ttk.Style().configure("TNotebook", background=mainWcolor, foreground='green')   #configure "tabs" background color

paramsFrame = tki.Frame(tabs, bg=mainWcolor)   #frame with control parameters
comsFrame = tki.Frame(tabs, bg=mainWcolor)     #frame with communication parameters.
ssInfoFrame = tki.Frame(tabs, bg=mainWcolor)   #frame with start and stop messages and procedures

tabs.add(paramsFrame, text = "Control")
tabs.add(comsFrame, text = "Communications")
tabs.add(ssInfoFrame, text = "Start & Stop info")
tabs.pack()

提前致谢。

原文由 Justino Rodrigues 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以尝试创建自定义主题。

 import tkinter as tk
from tkinter import ttk

root = tk.Tk()

mygreen = "#d2ffd2"
myred = "#dd0202"

style = ttk.Style()

style.theme_create( "yummy", parent="alt", settings={
        "TNotebook": {"configure": {"tabmargins": [2, 5, 2, 0] } },
        "TNotebook.Tab": {
            "configure": {"padding": [5, 1], "background": mygreen },
            "map":       {"background": [("selected", myred)],
                          "expand": [("selected", [1, 1, 1, 0])] } } } )

style.theme_use("yummy")

note = ttk.Notebook(root)
f1 = ttk.Frame(note, width=300, height=200)
note.add(f1, text = 'First')
f2 = ttk.Frame(note, width=300, height=200)
note.add(f2, text = 'Second')
note.pack(expand=1, fill='both', padx=5, pady=5)

tk.Button(root, text='yummy!').pack(fill='x')

root.mainloop()


编辑

最详细的 ttk 文档来自 tcl/tk 世界

例如。

http://www.tcl.tk/man/tcl/TkCmd/ttk_notebook.htm

对于一些有用的基于 python 的示例,您可以从 http://code.google.com/p/python-ttk/ 获取 pyttk-samples 包

原文由 Oblivion 发布,翻译遵循 CC BY-SA 3.0 许可协议

我使用 Oblivion 的答案已经有一段时间了,但我遇到了一个问题,即打开/保存对话框按钮轮廓消失,文本小部件中的 Checkbuttons 似乎从未被选中(即使它们被选中)。所以,我将主题代码翻译成一些样式配置等来解决问题(它解决了)。这将允许您更改选项卡栏颜色、选项卡背景/前景和活动选项卡背景/前景。另外,它不会导致您选择的其他主题出现问题。它本质上与翻译过来的主题中的代码相同。所以,真的,Oblivion 应该得到大部分的赞誉。

 Style().configure("TNotebook", background=myTabBarColor);
Style().map("TNotebook.Tab", background=[("selected", myActiveTabBackgroundColor)], foreground=[("selected", myActiveTabForegroundColor)]);
Style().configure("TNotebook.Tab", background=myTabBackgroundColor, foreground=myTabForegroundColor);

编辑:显然,此解决方案在 Windows 中不起作用。我在 Linux(Xubuntu 的多个版本)中对其进行了测试。

原文由 Brōtsyorfuzthrāx 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题