==== Style ====
Style это класс для работы со стилями и темами. Именно этот класс надо использовать для конфигурирования внешнего вида виджетов. Основные методы класса:
===configure===
Конфигурирование внешнего вида виджетов. В качестве аргументов принимает название стиля виджета (например "TButton") и список опций конфигурирования. Пример:
style.configure("TButton", padding=6, relief="flat", background="#ccc")
===map===
Конфигурирование внешнего вида виджетов в зависимости от их состояний (active, pressed, disabled и т.д.). В качестве аргументов принимает название стиля виджета и список опций конфигурирования, где опции представлены в виде списка. Пример:
style.map("C.TButton",
foreground=[('pressed', 'red'), ('active', 'blue')],
background=[('pressed', '!disabled', 'black'), ('active', 'white')]
)
===lookup===
Возвращает соответствующую опцию конфигурирования. Пример:
style.lookup("TButton", "font")
===layout===
Изменяет 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()
{{ :python:оконное_приложение:tkinter:ttk:ttk1.png?300 |}}