如何解决ttk 样式“ TNotebook.Tab”的背景和边框宽度不起作用
ttk主题支持的目的是使系统提供主题 引擎,以绘制构成Tk小部件的各种元素,以便我们匹配 当前UI的外观。对于Windows Vista或更高版本的“笔记本”选项卡,这意味着正在使用“ vsapi”引擎绘制 元素。该选项卡是一个元素,外观由Windows 主题提供。因此,它没有提供任何修改背景的方法,就像 通过选择其他Windows主题所做的那样。
不过,你可以做的是选择从不同的TTK的主题,一个元素 不支持更改背景风格。这可能无法以 其他方式紧密匹配,但是您已经与系统提供的主题有所不同。在 完全控制你的元素的外观的方法是创建一个新的元素 使用“图像”引擎,并提供图像被用于绘制元素。一种 更简单的方法是从其他主题之一借用元素。在 “默认”的主题提供了用于指定接头元件的颜色支持 ,所以我们可以借由重新创建元素和重新定义TNotebook 布局以使用新的元素。
# Import the Notebook.tab element from the default theme
noteStyler.element_create('Plain.Notebook.tab', "from", 'default')
# redefine the TNotebook Tab layout to use the new element
noteStyler.layout("TNotebook.Tab",
[('Plain.Notebook.tab', {'children':
[('Notebook.padding', {'side': 'top', 'children':
[('Notebook.focus', {'side': 'top', 'children':
[('Notebook.label', {'side': 'top', 'sticky': ''})],
'sticky': 'nswe'})],
'sticky': 'nswe'})],
'sticky': 'nswe'})])
noteStyler.configure("TNotebook", background=COLOR_1, borderwidth=0)
noteStyler.configure("TNotebook.Tab", background="green", foreground=COLOR_3,
lightcolor=COLOR_6, borderwidth=2)
noteStyler.configure("TFrame", background=COLOR_1, foreground=COLOR_2, borderwidth=0)
可用的选项在某种程度上取决于所使用的主题引擎,并且Windows主题比大多数主题更具限制性,因为 元素的图移交给了第三方。极端的自定义是可能的,但确实需要重新定义小部件的布局。这是在 python ttk文档中提到的,但是除非您对ttk小部件的设计有所了解,否则执行该操作并不是 很明显。设计意图是您不进行这种极端的自定义,而是使您的应用程序符合用户选择的平台 外观。但是工具可用-埋得很深。这是Tcl示例的另一个链接,该示例将关闭按钮添加到标签
解决方法
我一直在与TKinter一起玩,试图创建多个选项卡窗口。
当我尝试设置样式时,TNotebook.Tab
它会忽略选项background
和borderwidth
,但会承认foreground
。我究竟做错了什么?
这是代码的相关部分:
COLOR_1 = 'black'
COLOR_2 = 'white'
COLOR_3 = 'red'
COLOR_4 = '#2E2E2E'
COLOR_5 = '#8A4B08'
COLOR_6 = '#DF7401'
#Notebook Style
noteStyler = ttk.Style()
noteStyler.configure("TNotebook",background=COLOR_1,borderwidth=0)
noteStyler.configure("TNotebook.Tab",foreground=COLOR_3,lightcolor=COLOR_6,borderwidth=0)
noteStyler.configure("TFrame",foreground=COLOR_2,borderwidth=0)
#Create Notebook and Tabs
note = ttk.Notebook(gui,style='TNotebook')
myTab = ttk.Frame(note,style='TFrame')
note.add(myTab,text = 'MyTab',compound=tk.TOP)
note.pack(anchor=tk.W)
万一重要,我正在Windows 7 64位上运行python 2.7。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。