Как настроить карту для всех виджетов ttk, кроме TButton?

Я создаю графический интерфейс с Tkinter и ttk, и я пытаюсь создать собственный map, чтобы сделать виджеты ttk синими при наведении. Я мог бы применить это ко всем виджетам, передав "." в качестве первого аргумента ttk.Style().map(...).

import tkinter as tk
import tkinter.ttk as ttk


root = tk.Tk()

style = ttk.Style()
style.map(".", background=[("active", "blue")])

button = ttk.Button(root, text = "An example button")
button.pack()
scrollbar = ttk.Scrollbar(root)
scrollbar.pack()

root.mainloop()

Но теперь я хочу исключить TButton из этого запроса. То есть мне нужно сделать все виджеты кроме TButton синими при наведении. Как мне это сделать?

Передача ".!TButton", а также "!TButton" вместо "." не имеет никакого эффекта.

@CoolCloud, большое спасибо :) Как-то я не подумал переопределить сопоставление. Хотите добавить свой комментарий в качестве ответа?

Demian Wolf 11.12.2020 14:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
227
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Существует корневой стиль с именем '.'. Чтобы изменить внешний вид некоторых функций по умолчанию для каждого виджета, вы можете настроить этот стиль. Например, предположим, что вы хотите, чтобы весь текст был шрифтом Helvetica размером 12 пунктов (если только он не переопределен другим стилем или параметром шрифта).

Поэтому мы можем переопределить его, просто добавив другой стиль:

style.map('TButton',background=[('active','#f0f0f0')])

Обратите внимание, что вы, возможно, захотите сделать это для каждого стиля, который вы хотите установить по умолчанию.

Прочитайте здесь для получения дополнительной информации.

Большое спасибо! :)

Demian Wolf 11.12.2020 14:57

Другие вопросы по теме