изменить выбранный фон ttk treeview - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь изменить выбранный фон и цвет переднего плана строки в виджете Treeview, я искал вопрос, который был задан ранее, но не нашел явного ответа на него.

Даже если вопрос достаточно ясно, но мой код выглядит примерно так сейчас и не работает вообще, он даже не изменит нормальный фон (как я обнаружил, я должен связать теги для событий выбора и отмены выбора, но теги не работают и ничего не меняется ):

tree = ttk.Treeview(master)
tree.pack()
tree.tag_configure("hi", background="red")
tree.insert("", "end", text="this is a row", tags=("hi",))

любая помощь будет оценена.

1 Ответ

1 голос
/ 29 марта 2020

Благодаря комментарию @stovfl я нашел ответ и решил поделиться им: (хотя до сих пор не выяснил, почему стиль фона ни на что не влияет в моем коде)

создание темы будет влияет на все виджеты ttk, что было не тем, что я хотел, поэтому я унаследовал тему от темы по умолчанию, нашел тему по умолчанию, используя этот код:

print(ttk.Style().theme_use())

, который для меня на windows 10 был 'vista ', вот код для изменения цвета фона выбранных строк:

style = ttk.Style(master)
style.theme_create("my", "vista",
                           settings={
                               'Treeview': {
                                   'map': {
                                       'background': [('selected', '#ffdddd'), ("!selected", "white")],
                                       'foreground': [('selected', 'black')],
                                       "font": [("", ("", 13))]
                                   }  # end 'map'
                               }  # end 'Treeview'
                           }  # end settings
                           )
style.theme_use("my")
...