我做了一个树视图,我想在第一列和第二列中添加值,然后程序需要计算当你按下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
答案 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