了解tkinter Treeview

时间:2016-03-05 01:04:41

标签: python-3.x tkinter

我正在尝试创建一个Treeview - 这是我的代码:

def treeview(self):
        tree = Treeview(self.parent, columns=("no","name","props","subs", "summary"))

        tree.heading('#0', text='No.')
        tree.column('#0', width=100)
        tree.heading('#1', text='Name')
        tree.column('#1', width=100)
        tree.heading('#2', text='Props')
        tree.column('#2', width=100)
        tree.heading('#3', text='Subs')
        tree.column('#3', width=100)
        tree.heading('#4', text='Summary')
        tree.column('#4', width=100)

        tree.place(relx=0.5,rely=0.2, anchor=CENTER)

应该有5列 - 但是,最后一列右侧有第六个空白列。这是为什么?

另外,我如何实际向每列添加文字?谢谢!

1 个答案:

答案 0 :(得分:2)

0中的TreeView总是“图标列” - 请参阅this manual page,其中包含:

  

您的Treeview小部件将以多列结构化。第一列(我们称之为图标列)显示折叠或展开项目的图标。在其余列中,您可以显示您喜欢的任何信息。

所以我最好的猜测是,当您尝试为列0指定标签时,Tk 添加一个? (总计6)。

至于Treeview的adding文字。再次,the manual page说:

  

从顶级条目开始,使用.insert()方法填充树。每次调用此方法都会向树中添加一个项目。使用此方法的open关键字参数指定项目最初是展开还是折叠。

     

如果要为此项提供iid值,请使用iid关键字参数。如果你省略这个参数,ttk会把它作为.insert()方法调用的结果并返回它。

其中介绍如何插入行,然后“实际向每列添加文字”:

  

values:此参数提供要在项目的每列中显示的数据项。值以逻辑列顺序提供。如果提供的值太少,则此项中的其余列将为空;如果提供的值太多,则会丢弃附加内容。

因此,对于您定义的列,tree.insert(values=[3,"Fred",'prop','sub','guy named Fred'])插入给定values的行。