TreeView - TclError: Item 0 already exists

Fragen zu Tkinter.
Antworten
diablo75
User
Beiträge: 30
Registriert: Dienstag 8. September 2009, 23:12

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???
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Was sagt denn die Dokumentation, was iid ist?
diablo75
User
Beiträge: 30
Registriert: Dienstag 8. September 2009, 23:12

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)
Antworten