Seite 1 von 1

TreeView - TclError: Item 0 already exists

Verfasst: Donnerstag 12. August 2021, 15:43
von diablo75
Leider hab ich wieder einen Fehler wo ich keine Lösung im Netz finde.
Ich geben in mein Suchfeld daten ein und starte eine Suche in meiner Sqlite DB.
Beim ersten mal funkt alles super - wenn ich aber die 2 suche starte kommt die o.a. Fehlermeldung

Was muss ich clearen damit das Item / Index wieder akzeptiert wird??
mit clear und append hab ichs schon probiert - geht aber nicht.

Code: Alles auswählen

#Auf Eingabetaste bei Feld FamName reagieren
    def entry_KSuchFamName_klickEnter(self,event):
        dbrecord = Datenbank.SqliteVerbindung.SqliteDatenbank.sqlite_abfrage(self.eingabefeld_wert_FamName.get()) #gibt eine Datenmenge retour
        self.daten_verarbeiten(dbrecord)

    #TreeView mit Daten füllen und einfärben:
    def daten_verarbeiten (self,data):
        data.sort(key= itemgetter(1)) #Sortierung nach 2ter Spalte (FamName)
               
        for index, record in enumerate(data):  #enumerate gibt index und record zurück
            if index % 2 == 0:
                self.TreeViewKundenDaten.insert(parent='',index='end',iid=index, text='',values=(record[0], record[1],record[2],record[3],record[4],record[5]),
                tags=('gerade'))
            else:
                self.TreeViewKundenDaten.insert(parent='',index='end',iid=index, text='',values=(record[0], record[1],record[2],record[3],record[4],record[5]),
                tags=('ungerade')) 
Bekomme dann folgende Fehlermeldung:
Traceback (most recent call last):
File "C:\Program Files\Python39\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "c:\Users\schus\Documents\Programmieren\Python\Maklerdatenbank\GUI\KundeSuchFrame.py", line 123, in entry_KSuchFamName_klickEnter
self.daten_verarbeiten(dbrecord)
File "c:\Users\schus\Documents\Programmieren\Python\Maklerdatenbank\GUI\KundeSuchFrame.py", line 131, in daten_verarbeiten
self.TreeViewKundenDaten.insert(parent='',index='end',iid=index, text='',values=(record[0], record[1],record[2],record[3],record[4],record[5]),
File "C:\Program Files\Python39\lib\tkinter\ttk.py", line 1361, in insert
res = self.tk.call(self._w, "insert", parent, index,
_tkinter.TclError: Item 0 already exists

Hat wer ne Idee???

Re: TreeView - TclError: Item 0 already exists

Verfasst: Donnerstag 12. August 2021, 21:13
von sparrow
Was sagt denn die Dokumentation, was iid ist?

Re: TreeView - TclError: Item 0 already exists

Verfasst: Freitag 13. August 2021, 09:59
von diablo75
Danke für den Tip mit der iid

Habs nun endlich lösen können:

Code: Alles auswählen

#Auf Eingabetaste bei Feld FamName reagieren
    def entry_KSuchFamName_klickEnter(self,event):
        dbrecord = Datenbank.SqliteVerbindung.SqliteDatenbank.sqlite_abfrage(self.eingabefeld_wert_FamName.get()) #gibt eine Datenmenge retour
        if self.TreeViewKundenDaten.exists('0'): #Prüfen of Daten in TreeView sind -  wenn ja Löschen da sonst update nicht funktioniert
            for index in self.TreeViewKundenDaten.get_children():
                self.TreeViewKundenDaten.delete(str(index))
        self.daten_verarbeiten(dbrecord)