Как полностью изменить цвет фона на дереве дерева 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.