Удалить пустой первый столбец объекта Treeview - PullRequest
6 голосов
/ 31 декабря 2011

Я пытаюсь создать программу, которая извлекает записи из базы данных, используя sqlite3, а затем отображает их, используя Treeview.

Мне удалось создать таблицу с записями, но я просто не могу удалить первый пустой столбец.

def executethiscommand(search_str):
    comm.execute(search_str)
    records = comm.fetchall()
    rows = records.__len__()
    columns = records[0].__len__()

    win = Toplevel()
    list_columns = [columnames[0] for columnames in comm.description]
    tree = ttk.Treeview(win)
    tree['columns'] = list_columns

    for column in list_columns:
        tree.column(column, width=70)
        tree.heading(column, text=column.capitalize())

    for record in records:
        tree.insert("", 0, text="", values=record)

    tree.pack(side=TOP, fill=X)

enter image description here

Ответы [ 3 ]

22 голосов
/ 05 января 2012

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

t = ttk.Treeview(w)
t['show'] = 'headings'

Это удалит этот пустой столбец.

3 голосов
/ 02 февраля 2015

Немного поздно и хакерски, но вы также можете сделать следующее:

tree.column("#0", width=0)

'# 0' - это идентификатор первого столбца, поэтому установка ширины в 0 технически скроет его

1 голос
/ 31 декабря 2011

Возможно, вы хотите использовать что-то вроде TkTable лучше, чем TreeView.
В TreeView первый столбец определен для присвоения имени или идентификатора объекту, описанному в каждой строке. Из документов :

Виджет в виде дерева может отображать и разрешать просмотр по иерархии. элементов, и может отображать один или несколько атрибутов каждого элемента в виде столбцов справа от дерева.

Вы заполняете первый столбец:

tree.insert('', insert_mode, text='name first col')

Если вы все еще хотите использовать первый столбец как обычный, вы можете попробовать:

tree['columns'] = list_columns[1:]
for record in records:
    tree.insert("", 0, text=record[0], values=record[1:])

Однако я не знаю, как или даже возможно ли заполнить заголовок для этого первого столбца в TreeView.

...