Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: zlmonroeОтветов: 2

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

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

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

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

Брайан Окли Re: как получить ttk:: древовидное представление без рамки

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

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

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

  • Вы пробовали style.configure("Treeview", fieldbackground="black")? j_4321 06.05.2017
  • Я только что попробовал это сейчас, и это, кажется, не имеет никакого эффекта zlmonroe 07.05.2017
  • Я думаю, что это связано с используемой вами темой ttk, она должна работать с темой clam (style.them_use("clam")). j_4321 07.05.2017
  • Это было j_4321. Огромное спасибо! (Я был бы рад принять ваш ответ, если бы вы представили его как полноценный ответ вне комментариев. Спасибо также за вашу помощь, мистер Яхли. zlmonroe 07.05.2017

pythontkintertreeviewttk

Ответы

Ответ 1 · рейтинг 11 · j_4321

Чтобы сделать фон 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()

Ответ 2 · рейтинг 3 · Mr Yahli

Вместо этого используйте этот код:

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

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

Яхли.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы