【问题标题】:Adding values to specific column in treeview Tkinter将值添加到树视图 Tkinter 中的特定列
【发布时间】:2018-10-06 01:21:08
【问题描述】:

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

【问题讨论】:

  • 你希望它做什么:PlannedCostPerSize[4]?
  • 我正在尝试将PlannedCostPerSize 插入到第 3 列,所以我写了索引 [4]。我知道这不是正确的代码,但我尝试了一些方法
  • 您是否阅读过有关insert 方法的任何文档? docs.python.org/3/library/…
  • 是的,我没有找到解决方案。我知道如何将值插入所有列,但我不知道如何仅插入一个(特定)列
  • 我更新了问题,并稍微更改了代码。请检查一下并告诉我您是否可以帮助我解决我的问题。

标签: python tkinter treeview


【解决方案1】:

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

一种可能性是使用Treeviewset 方法来获取或设置特定列中的值:

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

您还可以使用列的名称(在创建Treeview 时在columns= 中给出)而不是'#&lt;column number&gt;'

另一种可能是使用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

【讨论】:

  • 我设法用set 完成了我尝试过的操作,但它总是在第一行输入结果,即使我在其他行中添加值也是如此。你知道问题出在哪里吗?
  • 你有解决这个问题的办法吗?
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 2018-04-17
  • 2023-03-22
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
相关资源
最近更新 更多