将值添加到treeview Tkinter中的特定列

时间:2018-04-25 14:07:06

标签: python tkinter treeview

我做了一个树视图,我想在第一列和第二列中添加值,然后程序需要计算当你按下ENTER按钮时我将放入第三列的值(我使用了事件和绑定)。我不知道如何将值放在treeview的特定列中,我总是得到这个错误:

TypeError: 'float' object is not subscriptable

我知道如何一次在每个列中插入值,但我不知道如何只将一个值插入特定列,而不更改其他列中的值。 这是我写的功能:

def PlannedCosPerSize(event):

    try:
        for child in tree.get_children():
            Size=round(float(tree.item(child,"values")[1]),2)
            PlannedCost=round(float(tree.item(child,"values")[2]),2)
            PlanCostPerSize=float(round(PlannedCost/Size,2))

            tree.insert("","end", values=(PlanCostPerSize)[4])

            print(PlanCostPerSize)


    except IndexError:
        Error=messagebox.showinfo("error","You have error")
        pass

tree.bind('<Return>', PlannedCosPerSize)  # validate with Enter

1 个答案:

答案 0 :(得分:2)

insert方法正在Treeview中创建一个新项目,但您要做的是编辑现有项目,因此这不是要使用的方法。

一种可能性是使用set的{​​{1}}方法来获取或设置特定列中的值:

  • Treeview会在第一列中为您提供值。
  • treeview.set(item, '#1')会将第三列的值更改为treeview.set(item, '#3', new_value)

您还可以使用列名称(创建new_value时在columns=中指定的名称)而不是Treeview

另一种可能性是使用'#<column number>'方法:

  • item会为您提供该项目的值。
  • old_values = treeview.item(item, 'values')将更改项目的最后一个值。

Treeview小部件上的文档:http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Treeview.html