Как полностью изменить цвет фона на дереве дерева tkinter.ttk

Я пытался сделать браузер каталогов для моего недавнего проекта, который я разрабатываю на python 3.4.4 с помощью tkinter. Я не хочу, чтобы фон был цветом по умолчанию, поэтому я изменил фон большинства виджетов. У меня не было никаких проблем, пока я не добрался до Treeview. Я не слишком хорош с ttk.Style(), но мне все же удалось получить

ttk.Style().configure("Treeview", background="black",
                foreground="white")

работать, однако это только меняет фон области, включенной в виджет. ошибка

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

Bryan Oakley Re: как получить ttk::treeview без рамки

как создать ttk::treeview без рамки?

По сути, был сделан вывод, что это ошибка при запуске на Windows. Из-за этого у меня осталось 3 общих вопроса:

Я просто полностью упускаю что-то очевидное и неправильно понимаю эти посты (скрещивая пальцы здесь), и если да, то что я делаю не так? Или, если это действительно было ошибкой, было ли какое-то решение с 2007 года? И, наконец, если не было никакого решения, найдется ли у кого-нибудь способ обойти проблему, независимо от того, насколько хакерское решение?

2 ответа

Решение

Чтобы сделать фон Treeview абсолютно черным, необходимо background и fieldbackground параметры стиля Treeview должны быть установлены на черный.

Кроме того, не все темы TTK поддерживают fieldbackground вариант, как темы "xpnative" и "vista".

Код:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

style = ttk.Style(root)
# set ttk theme to "clam" which support the fieldbackground option
style.theme_use("clam")
style.configure("Treeview", background="black", 
                fieldbackground="black", foreground="white")

tree = ttk.Treeview(root)
tree.insert("", 0, "item", text="item")
tree.pack()

root.mainloop()

Используйте для использования этого кода вместо:

ttk.Style().configure("Treeview", background="black", 
foreground="white", fieldbackground="black")

Надеюсь, это поможет вам,

Yahli.

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