Есть ли способ назначить различные изображения на основе состояния кнопки ttk? - PullRequest
0 голосов
/ 11 октября 2019

Я работаю с графическим интерфейсом и хочу настроить кнопки ttk на различные изображения в зависимости от состояния кнопки. Например:

import tkinter as tk
from tkinter import PhotoImage, ttk

activeImage = PhotoImage(file="images/active.png")
disabledImage = PhotoImage(file="images/disabled.png")
normalImage = PhotoImage(file="images/normal.png")

button = ttk.Button(frame,\
                    activeimage=activeImage,\
                    disabledimage=disabledImage, \
                    normalimage=normalImage,\
                    command=lambda pass)

Я не нахожу ничего в документации tk, объясняющей, как это сделать, ни на этом сайте. Приношу свои извинения, если об этом уже спрашивали где-то еще.

1 Ответ

0 голосов
/ 11 октября 2019

Да, виджеты ttk поддерживают отображение атрибутов в состояния с помощью метода map для Style.

Например:

style = ttk.Style()
style.map(
    "Custom.TButton",
    image=[
        ("disabled", disabledImage),
        ("!disabled", normalImage),
        ("active", activeImage)
    ]
)

Далее создайте кнопку с этимstyle:

button = ttk.Button(frame, style="Custom.TButton")

На сайте tkdocs.com есть хорошее руководство по созданию пользовательских стилей. См. Стили и темы

...