删除Treeview对象的空第一列

Ash*_*rav 7 python treeview tkinter ttk

我正在尝试使用一个程序从数据库中检索记录sqlite3,然后使用a显示它们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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Dem*_*nex 22

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

t = ttk.Treeview(w)
t['show'] = 'headings'
Run Code Online (Sandbox Code Playgroud)

这将消除那个空列.


Bru*_*i92 6

有点晚了,但你也可以做的是:

tree.column("#0", width=0)
Run Code Online (Sandbox Code Playgroud)

不要忘记使用将最小宽度设置为零;tree.column("#0", minwidth="0")

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

  • 是的,这不起作用,但是添加 minwidth=0 解决了默认 minwidth 的问题。 (4认同)
  • 这不起作用,至少对我而言。它仍然显示一个空的小列,好像该命令隐含了一个最小宽度。 (3认同)

joa*_*uin 2

也许您想使用TkTable之类的东西比 TreeView 更好。
在 TreeView 中,第一列定义用于为每行中描述的对象提供名称或 ID。来自文档

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

您将第一列填写为:

tree.insert('', insert_mode, text='name first col')
Run Code Online (Sandbox Code Playgroud)

如果您仍然想使用第一列作为普通列,您可以尝试:

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

但是我不知道如何或即使也可以填充 TreeView 中第一列的标题。