Я создаю графический интерфейс с 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" вместо "." не имеет никакого эффекта.
Существует корневой стиль с именем '.'. Чтобы изменить внешний вид некоторых функций по умолчанию для каждого виджета, вы можете настроить этот стиль. Например, предположим, что вы хотите, чтобы весь текст был шрифтом Helvetica размером 12 пунктов (если только он не переопределен другим стилем или параметром шрифта).
Поэтому мы можем переопределить его, просто добавив другой стиль:
style.map('TButton',background=[('active','#f0f0f0')])
Обратите внимание, что вы, возможно, захотите сделать это для каждого стиля, который вы хотите установить по умолчанию.
Прочитайте здесь для получения дополнительной информации.
Большое спасибо! :)
@CoolCloud, большое спасибо :) Как-то я не подумал переопределить сопоставление. Хотите добавить свой комментарий в качестве ответа?