Инструменты пользователя

Инструменты сайта


python:okonnoe_prilozhenie:tkinter:ttk:style

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/okonnoe_prilozhenie/tkinter/ttk/style.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)