Как изменить цвет строки Treeview при выделении?
Установил ttkthemes для использования одной темы. К сожалению в ней не реализовано изменение цвета строки при клике на неё. Как можно вручную это настроить?
То есть в самой теме не настроен фокус при нажатии на строку Treeview, из-за этого возникает ряд проблем. Надо как-то включить этот фокус, но я никак не могу понять что и где надо изменить. Помогите, пожалуйста.
Ответы (2 шт):
Нашёл только один способ - лезть в tcl файлы темы и вручную менять.
Код(можно найти в файле ваша_тема.tcl, если нет, то надо вставить):
ttk::style map Treeview \
-background [list disabled $colors(-selectbg)\
{!disabled !selected} $colors(-window) \
selected $colors(-selectbg)] \
-foreground [list disabled $colors(-disabledfg) \
{!disabled !selected} black \
selected $colors(-selectfg)]
Код в первых [] реализует цвет заднего фона строки в Treeview. Вторые [] реализуют установку цвета для текста в строках.
$colors(-...) - выбор цвета из списка, который присутствует в самом начале кода каждой темы, вместо этого можно вставить самому любой цвет в формате "#номер".
Необходимый код для настраивания Treeview из моей библиотеки функций. Переменные типа lib_background - цвета и шрифты - назначьте сами.
import tkinter.ttk
tkinter.ttk.Style().theme_use("clam")
tkinter.ttk.Style().configure(style = "Treeview",
font = lib_font_base,
relief = "groove")
tkinter.ttk.Style().map("Treeview",
background=[("selected", lib_background)],
foreground=[("selected", lib_foreground)],
font = [("disabled", lib_font_base), ("focus", lib_font_base)],
relief = [("disabled", "groove"), ("focus", "groove")])
tkinter.ttk.Style().configure(style = "Treeview.Heading",
background = lib_background,
font = lib_font_bold,
foreground = lib_foreground)
tkinter.ttk.Style().map("Treeview.Heading",
background = [("disabled", lib_background), ("focus", lib_background)],
font = [("disabled", lib_font_bold), ("focus", lib_font_bold)],
foreground = [("disabled", lib_foreground), ("focus", lib_foreground)])