Как изменить размер поля заголовка вкладки и шрифта вкладок ttk notebook? - PullRequest
0 голосов
/ 16 января 2019

Я хочу изменить шрифт, ширину и высоту заголовка вкладки в ttk.notebook python 3x

по приведенному ниже коду, я могу просто изменить ширину поля заголовка вкладки

text=f'{"frame 1": ^30s}

но как я могу изменить шрифт "frame 1", а также высоту заголовка вкладки?

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
notebook = ttk.Notebook(root)

f1 = tk.Frame(notebook, bg='red', width=200, height=200)
f2 = tk.Frame(notebook, bg='blue', width=200, height=200)

notebook.add(f1, text=f'{"frame 1": ^30s}')
notebook.add(f2, text=f'{"frame 2 longer": ^30s}')

notebook.grid(row=0, column=0, sticky="nw")
root.mainloop()

1 Ответ

0 голосов
/ 16 января 2019

Исходя из этого ответа о том, как настроить конфигурацию вкладки Блокнота, вы можете добавить информацию о шрифте в созданную тему, например, чтобы получить нужный тип шрифтов:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

s = ttk.Style()
s.theme_create( "MyStyle", parent="alt", settings={
        "TNotebook": {"configure": {"tabmargins": [2, 5, 2, 0] } },
        "TNotebook.Tab": {"configure": {"padding": [100, 10],
                                        "font" : ('URW Gothic L', '11', 'bold')},}})
s.theme_use("MyStyle")

notebook = ttk.Notebook(root)

f1 = tk.Frame(notebook, bg='red', width=200, height=200)
f2 = tk.Frame(notebook, bg='blue', width=200, height=200)

notebook.add(f1, text="frame 1" )
notebook.add(f2, text="frame 2 longer" )

notebook.grid(row=0, column=0, sticky="nw")
root.mainloop()

Другой подход заключается в прямой настройке стиля вкладки ноутбука.См. Ниже код.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

s = ttk.Style()
s.configure('TNotebook.Tab', font=('URW Gothic L','11','bold') )

notebook = ttk.Notebook(root)

f1 = tk.Frame(notebook, bg='red', width=200, height=200)
f2 = tk.Frame(notebook, bg='blue', width=200, height=200)

notebook.add(f1, text="frame 1" )
notebook.add(f2, text="frame 2 longer" )

notebook.grid(row=0, column=0, sticky="nw")
root.mainloop()

Вы должны заметить разницу между использованием s.configure('TNotebook.Tab', font=('URW Gothic L','11','bold') ) и s.configure('TNotebook', font=('URW Gothic L','11','bold') ).Первый изменяет шрифт виджета «Вкладка» в блокноте, а второй - шрифт «Блокнота».

Первый подход используется при настройке многих аспектов вкладки.Вы используете 2-й подход, если вы просто хотите изменить шрифт на вкладке Notebook.

Использование s.configure('.', font=('URW Gothic L','11','bold') ) означает, что все шрифты ttk виджетов будут одного типа.Сделайте это, если вы этого хотите.

...