删除Treeview对象的空第一列

时间:2011-12-31 15:08:57

标签: python tkinter treeview ttk

我正在尝试创建一个程序,使用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 个答案:

答案 0 :(得分:22)

第一个空列是项目的标识符,您可以通过设置show参数来抑制它。

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

这将消除那个空列。

答案 1 :(得分:3)

有点迟到和hacky但你也可以做的是:

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

'#0'是第一列的标识符,因此将宽度设置为0在技术上会将其隐藏

答案 2 :(得分:1)

可能你想使用像TkTable这样的东西比TreeView更好 在TreeView中,第一列定义为为每行中描述的对象指定名称或id。来自docs

  

树视图窗口小部件可以显示并允许浏览层次结构   项目,并可以将每个项目的一个或多个属性显示为列   在树的右边。

您在第一列填写:

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中填充第一列的标题。