Gewusst wie: löschen Sie Elemente aus einer der ttk.Treeview-widget?
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 ist eine Liste, die zeigt so etwas wie... ('Zucker', '1 Tasse') und so weiter... Die def ist für ein Kombinationsfeld ausgewählt ist, also was ich möchte ist, dass das treeview zu löschen und nicht nur halten Sie das hinzufügen mehr Zutaten. Leider sehe ich nicht ein clear()
Methode.
Wenn es eine programmatische Möglichkeit, herauszufinden, was zuerst da (das aufzählen einer rowcount wäre gut...) dies treibt mich Nüsse. Ich habe bemerkt, in den docs, können Sie die delete-Methode, aber es will wissen, was das Element zu löschen... wenn ich mit:
ingredients.delete('',0)
Bekomme ich
TclError: Item 0 not found
Also ich würde davon ausgehen, es will so etwas wie "Zucker", wie die Element...
natürlich ist es ein catch 22, weil, wenn Sie wählen Sie die combobox und möchten, deaktivieren Sie die Zutaten in der Strukturansicht die den gleichen Wirkstoff Elemente sind nicht in jedem Rezept, wie können wir also wissen, welche Einträge zu löschen sind?...
Bitte lassen Sie mich wissen, wenn Sie weitere details... ich bin ziemlich neu in der Arbeit mit dem treeview-Objekt, aber Ihr macht mich wollen nur arbeiten mit zwei Listboxen, die auf einer Leinwand.
- Fast doppelt (aber älter) stackoverflow.com/questions/22812134/... und die neuere version ist viel übersichtlicher. Bitte berücksichtigen Sie die Kräfte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie ein Element einfügen auf den Baum, der
insert
- Methode gibt ein Element-id. Dies ist, was Sie geben, um die delete-Methode.Ebenfalls eine Element-id (z.B. root-Element), können Sie eine Liste der alle seine Kinder mit der
get_children
Methode. Wenn Sie nicht geben irgendwelche Argumente an denget_children
es gibt eine Liste aller Elemente, die gehören zum root-element. Sie können dann iteriert über diese Liste, um die Elemente löschen.Dies ist alles dokumentiert, in der treeview-docs bei docs.python.org.
x = ingredients.get_children() for item in x: ingredients.delete(item)
ich Danke Ihnen so sehr Bryan!Nur den code ein wenig übersichtlicher und Pythonic:
list()
,set()
,tuple()
usw. um es in Python 3, aber.ingredients.delete(*ingredients.get_children())
.