微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何清除ttk.Treeview小部件中的项目?

如何解决如何清除ttk.Treeview小部件中的项目?

当您在树上插入一个项目时,该insert方法将返回一个项目ID。这就是您提供给delete方法的东西。

同样,给定一个项目ID(例如根项目),您可以使用该get_children方法获取其所有子项的列表。如果您不给任何参数,get_children它将返回属于根元素的所有项目的列表。然后,您可以遍历此列表以删除项目。

所有这些都记录在docs.python.orgtreeview文档中。

解决方法

ing_scroll = Scrollbar(window1_frame1,orient=VERTICAL)
ingredients = ttk.Treeview(window1_frame1,yscrollcommand=ing_scroll.set,height=5,columns=['Ingredient','Amount'],show="headings")
ingredients.heading("Ingredient",text='Ingredient')
ingredients.column("Ingredient",width=7)
ingredients.heading("Amount",text='Amount')
ingredients.column("Amount",width=1)
ing_scroll.config(command=ingredients.yview)
ing_scroll.pack(side=RIGHT,fill=Y)
ingredients.pack(side=LEFT,fill='both',expand=1)

def OnRecpSelect(event):
    DB = menu_combo.get()
    mytable = recipe_combo.get()
    ingredient_list = TKengine.pull_ingredients(DB,mytable)
    # NEED TO CLEAR THE INGREDIENTS TTK:TREEVIEW OBJECT HERE!
    for i in ingredient_list: 
        ingre = i[1]
        amoun = i[2]
        value = ingre,amoun
        ingredients.insert('',values=value)

Ingredient_list是一个显示诸如…(“糖”,“ 1杯”)之类的列表,依此类推…
def是针对所选组合框的,所以我想要的是清除树形视图而不是只是继续添加更多的成分。不幸的是我没有看到一种clear()方法。

如果有一种编程的方式来识别首先存在的内容(枚举行数将是个好方法……),这真让我发疯。我确实在文档中注意到您可以使用delete方法,但是它想知道要删除的项目…如果使用:

ingredients.delete('',0)

我懂了

TclError: Item 0 not found

所以我认为它需要像“糖”这样的东西…

当然这是个难题22,因为如果您选择组合框并想要清除成分树视图,则并不是每个配方中都包含相同的成分项目,那么我们如何知道要删除哪些项目?…

如果您需要更多详细信息,请告诉我…使用Treeview对象是我的新手,但是它让我只想在画布上使用两个列表框。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。