[Python-de] Listbox und curselection()

Albert Hermeling Albert.Hermeling at t-online.de
Die Jul 29 18:11:57 EDT 2003


Guten Abend,

für die Verwendung in einem Dialog habe ich folgende Klasse (hier gekuertzt 
wiedergegeben) programmiert:

.... 

class Listbox:
    def __init__(self, master,select):
        self.daten=[]
        self.liste=["Test1","Test2","Test5","Test4","Test3"]
        
        self.toplevel=Tkinter.Toplevel(master)
        self.toplevel.withdraw()				# Toplevel noch nicht anzeigen
        
        self.result=Tkinter.StringVar()
        
        self.listbox=Tkinter.Listbox(self.toplevel,selectmode=select)
        self.listbox.pack()

        self.button1=Tkinter.Button(self.toplevel,text="OK",command=self.ok)
        self.button1.pack()

    def einlesen(self,):
        self.liste.sort()
        for i in self.liste:
           self.listbox.insert(END,i)   

    def auslesen(self,):
        a=self.listbox.curselection()
        for i in a:
            b=Tkinter.getint(i)
            self.daten.append(self.liste[b])
        return self.daten

    def ok(self,):
        self.result.set("ok")
        self.toplevel.destroy()

    def show(self,):
        self.toplevel.deiconify()
        self.toplevel.wait_window()
        return self.result.get()

if __name__ == "__main__":
    
    tk=Tkinter.Tk()
    dia=Listbox(tk,EXTENDED) 
    dia.einlesen()

    if dia.show() == "ok":
        print dia.auslesen()
    else:
        print "Abgebrochen"

wenn ich das Programm starte und irgend ein Element auswähle und mit OK 
bestaetige bekomme ich folgende Fehlermeldung:

Traceback (most recent call last):
  File "./listbox.py", line 54, in ?
    print dia.auslesen()
  File "./listbox.py", line 30, in auslesen
    a=self.listbox.curselection()
  File "/usr/lib/python2.2/lib-tk/Tkinter.py", line 2336, in curselection
    return self.tk.splitlist(self.tk.call(
TclError: invalid command name ".136326436.136699908"

Ich glaube der Fehler haengt mit der Methode curselection() zusammen, weiter 
komme ich aber nicht. Vieleicht weis ja einer von euch wo der Fehelr steckt. 
Ich bedanke mich schon mal fuer die Hilfe.

Mit freundlichen Gruessen

Albert Hermeling