簡體   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