Gretings!
我想更改使用ttk.Notebook创建的标签页眉中显示的颜色。 在搜索了一段时间之后,我发现要改变ttk小部件的样式,我们可以使用ttk。样式,因为笔记本显然没有配置选项来改变它的颜色。但是,我只找到了如何更改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()
提前致谢。
答案 0 :(得分:7)
您可以尝试创建自定义主题。
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 world
例如
http://www.tcl.tk/man/tcl/TkCmd/ttk_notebook.htm
对于一些有用的基于python的示例,您可以获取pyttk-samples包 来自http://code.google.com/p/python-ttk/
答案 1 :(得分:3)
我一直在使用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的许多版本)中进行了测试。
答案 2 :(得分:0)
我是python的初学者,tkinter。我的应用程式也有这些样式问题。这是Treeview风格的作品,现在已经由Notebook检查了,对我来说,使用Windows可以正常工作.... theme_use,configure,map。
noteStyle = ttk.Style()
noteStyle.theme_use('default')
noteStyle.configure("TNotebook", background=clr, borderwidth=0)
noteStyle.configure("TNotebook.Tab", background="clr", borderwidth=0)
noteStyle.map("TNotebook", background=[("selected", clr)])