首页 > 解决方案 > Tkinter - 将多列添加到 Treeview

问题描述

我想在我的 Treeview 中添加三列,并将它们命名为“Varenavn”、“Antall”、“Best før”。我尝试了以下方法:

self.tree = ttk.Treeview (height = 10, columns = 3)  
self.tree.grid (row = 4, column = 0, columnspan = 2)  
self.tree.heading ('#0', text = 'Varenavn', anchor = W)  
self.tree.heading ('#1', text = 'Antall', anchor = W)  
self.tree.heading ('#2', text = 'Best før', anchor = W) 

但我得到:

 _tkinter.TclError: Column #2 out of range.

如果我将最后一段代码更改为:

self.tree.heading ('#1', text = 'Best før', anchor = W) 

'Antall'代码运行良好,但在'Best før'第二列中 被覆盖。

任何想法将不胜感激!

标签: pythontkintertreeview

解决方案


你给columns=论点的价值没有做你期望它做的事情。

来自New Mexico Tech Tkinter 参考资料

一系列列标识符字符串。这些字符串在内部用于标识小部件中的列。图标列,其标识符总是'#0',包含折叠/展开图标,并且始终是第一列。

您使用 columns 参数指定的列是图标列的补充。

例如,如果您指定,小部件中将出现三列:首先是图标列,然后是内部标识符为和columns=('Name', 'Size')的另外两列。'Name''Size'

因此,您应该给它一个要创建的列的名称元组,而不是一个数字,并且应该比您想要的总列数少一个,因为第一个总是'#0'.


为了解释你得到的错误,当你使用columns = 3它时,它会得到与使用相同的结果columns = ('3');您实际上只在列旁边创建一列'#0',可以通过'#1'或标识'3'。当您尝试访问列时'#2',您会收到超出范围的错误,因为只有两列。


推荐阅读