Невозможно изменить цвет фона дерева в Python - PullRequest
0 голосов
/ 23 сентября 2019

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

def display_device_status(self, colnames):
    # root = Tk()
    # self.root.title('Device Status')
    # self.root.resizable(width=FALSE, height=FALSE)
    # tree = ttk.Treeview(self.root, height=25, column=("col1", "col2"), show="headings", selectmode="browse")
    # tree.heading('#1', text='MAC')
    # tree.column('#1',width=290)
    # tree.heading('#2', text='Status')
    # tree.column('#2',width=290)
    tree = ttk.Treeview(self.root, height=25, column=colnames, show="headings", selectmode="browse")
    # tree.option_add()
    for eachcol in colnames:
        tree.heading(column=eachcol, text=eachcol)
        tree.column(column=eachcol, width=290, minwidth=0)
    vsb = ttk.Scrollbar(self.root, orient="vertical")
    vsb.configure(command=tree.yview)
    tree.configure(yscrollcommand=vsb.set)
    tree.pack(side="left")
    vsb.pack(side="right", fill="y")
    # viewing_records(tree)
    records = tree.get_children()
    for element in records:
        tree.delete(element)
    conn = sqlite3.connect('Gateway_Log.db')
    cursor = conn.cursor()
    query_result = cursor.execute("SELECT * FROM Status")
    for row in query_result:
        if row[1] == 1:
            tree.insert("", 'end', values=(row[0], 'Online'), tags = ('123',))
        else:
            tree.insert("", 'end', values=(row[0], 'Offline'), tags=('456',))
    tree.tag_configure('123', background='orange')
    tree.tag_configure('456', background='purple')
    cursor.close()
    conn.close()

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

Пожалуйста, помогите мне изменить цвет фона строки.

1 Ответ

1 голос
/ 25 сентября 2019

Вы корректно изменяете цвет строк, но в настоящее время в Tcl есть ошибка с древовидными представлениями: https://core.tcl -lang.org / tk / tktview? Name = 509cafafae поэтому строканабор цветов из тега переопределяется цветом фона дерева, установленным стилем.

В ожидании фиксированной версии tcl / tk вы можете использовать исправление, предложенное в билете об ошибке:

style = ttk.Style()

def fixed_map(option):
    # Returns the style map for 'option' with any styles starting with
    # ("!disabled", "!selected", ...) filtered out

    # style.map() returns an empty list for missing options, so this should
    # be future-safe
    return [elm for elm in style.map("Treeview", query_opt=option)
            if elm[:2] != ("!disabled", "!selected")]

style.map("Treeview",
          foreground=fixed_map("foreground"),
          background=fixed_map("background"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...