Style это класс для работы со стилями и темами. Именно этот класс надо использовать для конфигурирования внешнего вида виджетов. Основные методы класса:
Конфигурирование внешнего вида виджетов. В качестве аргументов принимает название стиля виджета (например «TButton») и список опций конфигурирования. Пример:
style.configure("TButton", padding=6, relief="flat", background="#ccc")
Конфигурирование внешнего вида виджетов в зависимости от их состояний (active, pressed, disabled и т.д.). В качестве аргументов принимает название стиля виджета и список опций конфигурирования, где опции представлены в виде списка. Пример:
style.map("C.TButton", foreground=[('pressed', 'red'), ('active', 'blue')], background=[('pressed', '!disabled', 'black'), ('active', 'white')] )
Возвращает соответствующую опцию конфигурирования. Пример:
style.lookup("TButton", "font")
Изменяет layout (схему) виджета. Виджеты ttk состоят из отдельных элементов, опций конфигурирования и других вложенных layouts. Следующий пример иллюстрирует применение метода layout:
style.layout("TMenubutton", [ ("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ])
element_create - Создаёт новый элемент темы.
element_names - Возвращает список элементов текущей темы.
element_options - Возвращает список опций (конфигурацию), указанного в аргументе элемента.
theme_create - Создаёт новую тему. Аргументы те же, что и в theme_settings.
theme_settings - Конфигурирует существующую тему. Первый аргумент - название темы, второй аргумент - словарь, ключами которого являются названия стилей (TButton и т.п.), а значениями - layout соответствующего стиля.
theme_names - Возвращает список доступных тем.
theme_use - Изменяет текущую тему на указанную в аргументе.
Примеры:
from tkinter import * from tkinter import ttk def setGeometry(win, winx, winy):#Функция выравнивает окно по центру x = (root.winfo_screenwidth() / 2 - winx / 2) y = (root.winfo_screenheight() / 2 - winy / 2) win.geometry("%dx%d+%d+%d" % (winx, winy, x, y)) root=Tk() setGeometry(root,400, 300) s = ttk.Style() print('Темы: ',s.theme_names()) print('Тема по умолчанию: ',s.theme_use()) s.theme_use('vista') s.configure('.', foreground="red") s.configure('TButton', width=19, padding=6) s.configure('TCombobox', width=15) s.configure('my.TButton', width=19, padding=6, foreground="blue") Button(root, text="Button 1", padx=40, pady=5).pack(pady=10) ttk.Button(root, text="Button 2").pack(pady=10) ttk.Button(root, text="Button 3", style="my.TButton").pack(pady=10) Entry(root).pack(pady=10) ttk.Entry(root).pack(pady=10) root.mainloop()