繁体   English   中英

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

[英]How to expand ttk notebook label or tab button to fill window

在此处输入图片说明

我想扩展标签以填充窗口

例如我们在 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()

截屏

第二个问题

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

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

上面的代码将所有未选中的选项卡的背景设置为绿色。 可以设置所选选项卡的背景

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

但是,无法单独更改选项卡的背景颜色。 要做到这一点,唯一的选择是使用按钮或标签作为选项卡来编写您自己的笔记本小部件。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM