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('',0,values=value)
ingredient_list是一个显示类似......('Sugar','1 Cup')等等的列表... def用于选择的组合框,所以我想要的是树视图清除而不仅仅是继续添加更多成分。不幸的是,我没有看到clear()
方法。
如果这是一种以编程方式识别首先存在的东西(枚举行数会很好......),这让我疯狂。我在文档中注意到你可以使用delete方法,但它想知道要删除的项目...如果我使用:
ingredients.delete('',0)
我得到了
TclError: Item 0 not found
所以我认为它需要像'糖'这样的东西......
当然它是一个捕获22,因为如果你选择组合框并想要清除成分树视图,相同的成分项目不在每个配方中,那么我们如何知道要删除的项目?...
如果您需要更多详细信息,请告诉我...我对使用treeview对象相当新,但它让我想在画布上使用两个列表框。
答案 0 :(得分:7)
让代码更简洁和Pythonic:
map(ingredients.delete, ingredients.get_children())
答案 1 :(得分:5)
在树上插入项目时,insert
方法返回项目ID。这是您为删除方法提供的内容。
此外,给定项目ID(例如根项目),您可以使用get_children
方法获取其所有子项的列表。如果您不向get_children
提供任何参数,它将返回属于根元素的所有项的列表。然后,您可以遍历此列表以删除项目。
这一切都记录在treeview docs的docs.python.org。