将值添加到树视图 Tkinter 中的特定列

Ale*_*eat 0 python treeview tkinter

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

TypeError: 'float' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

我知道如何一次在每一列中插入值,但我不知道如何在不更改其他列中的值的情况下仅将一个值插入到特定列中。这是我写的函数:

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
Run Code Online (Sandbox Code Playgroud)

j_4*_*321 5

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

一种可能性是使用 的set方法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.item(item, values=(old_values[0], old_values[1], new_value))将更改该项目的最后一个值。

有关 Treeview 小部件的文档:https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/ttk-Treeview.html