如何展开TTK笔记本标签或选项卡按钮以填充窗口

问题描述

enter image description here

我要扩展标签以填充窗口

例如我们在tk按钮中使用

parent.columnconfigure(0,weight=1)

button.grid(sticky='ew')

我们可以这样做吗,以同时扩展两个标签名称,以捕获所有可用的屏幕

还有第二个问题:如何更改标签或按钮标签的背景色或所有可用设置

提前感谢

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry('600x400+0+0')
root.columnconfigure(0,weight=1)
root.rowconfigure(0,weight=1)

tabs = ttk.Notebook()
tabs.grid(row=0,column=0,sticky='nsew')

tab1 = tk.Frame(tabs,bg='red')
tab2 = tk.Frame(tabs,bg='green')

tabs.add(tab1,text='First Tab')
tabs.add(tab2,text='Second Tab')

root.mainloop()

解决方法

第一个问题

我使用一种样式来配置标签的宽度:

style = ttk.Style(root)
style.configure('TNotebook.Tab',width=1000)

由于我设置了非常大的宽度,因此窗口太小而无法完全显示所有选项卡,因此它们会缩小以适合它们,这恰好提供了所需的结果。 为确保制表符宽度足够大,无论使用什么屏幕,都可以使用.winfo_screenwidth()

完整示例:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry('600x400+0+0')
root.columnconfigure(0,weight=1)
root.rowconfigure(0,weight=1)

style = ttk.Style(root)
style.configure('TNotebook.Tab',width=root.winfo_screenwidth())

tabs = ttk.Notebook()
tabs.grid(row=0,column=0,sticky='nsew')

tab1 = tk.Frame(tabs,bg='red')
tab2 = tk.Frame(tabs,bg='green')
tab3 = tk.Frame(tabs,bg='blue')

tabs.add(tab1,text='First Tab')
tabs.add(tab2,text='Second Tab')
tabs.add(tab3,text='Third Tab')

root.mainloop()

screenshot

第二个问题

我不确定是否要问这个,但是可以使用样式更改选项卡的设置。例如,设置背景颜色:

style.configure('TNotebook.Tab',background='green')

以上代码将所有未选中的标签的背景设置为绿色。所选标签的背景可以使用

设置
style.map('TNotebook.Tab',background=[('selected','yellow')])

但是,不能单独更改选项卡的背景颜色。为此,唯一的选择是使用按钮或标签作为标签来编写自己的笔记本小部件。

,

我在ttk笔记本中找不到增加选项卡空间的任何选项,但是我们可以通过一个简单的技巧来增加它的大小,如果您延长选项卡名称,它的空间也会增加,因此我们可以应用相同的方法来增加其宽度

tabs.add(tab1,text=f'{"  ":<{10}}First Tab{"  ":<{10}}')
tabs.add(tab2,text=f'{"  ":<{10}}Second Tab{"  ":<{10}}')

在上面的代码中,我只放置了10个空格,根据您的需要增加了数字