13

我正在尝试制作一个程序,该程序使用 检索数据库中的记录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)

在此处输入图像描述

4

5 回答 5

35

That first empty column is the identifier of the item, you can suppress that by setting the show parameter.

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

That will eliminate that empty column.

于 2012-01-05T08:53:04.750 回答
7

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

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

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

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

于 2015-02-02T09:43:40.110 回答
2

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

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

您使用以下内容填充第一列:

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

于 2011-12-31T16:12:34.440 回答
0

这对我有用:

tree['show'] = ''
于 2021-11-19T11:40:08.967 回答
0
tree.column("#0", width = 0, stretch = "no")

这样,您就可以摆脱第一列。

于 2021-10-21T16:01:46.350 回答