Seite 1 von 1

Combobox.clear()

Verfasst: Samstag 10. Mai 2008, 18:07
von ck
Ich will den Inhalt der Liste von einer Combobox löschen, aber das funktioniert bei mir nicht.
Kann mir bitte jemand erklären wie das funktioniert?
Ich erstelle die Combobox so:

Code: Alles auswählen

combobox = ComboBox(fenster,editable=True)
Mache Ich das falsch?

Verfasst: Samstag 10. Mai 2008, 20:50
von Hannes-Spz
hab gerade einiges ausprobiert, aber abgesehen davon, dass es kein "ComboBox"-element in Tkinter gibt, ...

es bleiben:
- Listbox
- Spinbox
- OptionMenu

Listbox ist einfach zu bedienen:

Code: Alles auswählen

from Tkinter import *
fenster = Tk()
libo = Listbox(fenster)
libo.pack()
for i in range(10):
    libo.insert("end","hallo"+str(i+1))
libo.delete(4,6)
for i in range(3):
    libo.insert(i+4, "-- fehlt --")
fenster.mainloop()
das OptionMenu kannst du mit einer einfachen aufreihung der anzugebnnen strings aufrufen
die Spinbox kann man einfach füllen - mit den optionen "from" und "to"
(zu beidem einiges bei effbot.org)
aber wie man die elemente löscht... o.o keine ahnung

wenn du nur das angezeigte feld leer bekommen magst, kannst du die variable (wenn du eine verwendest) auf einen leeren string setzen und dann das widget deaktivieren (ich glaube - state = disabled) dann kann niemand etwas auswählen o.o ...

eigentlich braucht man sowas nicht - also - was willst du damit machen?
(dann könntest du auch überlegen, ob du von Tkinter wegwechselst)

lg

Verfasst: Samstag 10. Mai 2008, 21:15
von ck
Ich habe die combobox von Tix

Code: Alles auswählen

from Tix import *
Das ist ein problem in einem größeren Programm an dem ich gerade arbeite, aber es ist über 300 zeilen lang und deswegen ist es ein blödsinn es reinzustellen.
Jedenfalls geht es darum den Listeninhalt einer Combobox zu löschen.
Ein kleines beispiel:

Code: Alles auswählen

from Tkinter import *
from Tix import *
fenster = Tk()
c = ComboBox(master=fenster,editable=True)
c.insert(1, "eins") # an der ersten stelle der Liste "eins" hinzufuegen
c.insert(2, "zwei")
c.insert(3, "drei")
c.pick(0)             # das erste Element der liste in das Entry einfuegen
c.pack(padx=10,pady=10) # padx/pady ein kleiner Abstand vom Rand
fenster.mainloop()
Wie gesagt würde ich gerne wissen wie man die Liste, die ich mit insert eingefügt habe löscht

Verfasst: Samstag 10. Mai 2008, 21:37
von EyDu
Wäre es nicht klug, einfach mal den Teil zu posten der NICHT funktioniert? Sollen wir jetzt raten was bei dir "nicht funktioniert" oder ob es Fehlermeldungen gibt (und welche)? Sinnvoll ist immer ein minimales Stück Code, bei dem das Problem auftritt.

Verfasst: Samstag 10. Mai 2008, 22:00
von numerix
ck hat geschrieben:Jedenfalls geht es darum den Listeninhalt einer Combobox zu löschen. [...] Wie gesagt würde ich gerne wissen wie man die Liste, die ich mit insert eingefügt habe löscht
Dazu brauchst du die subwidget-Methode der Tix-Widgets, um an die darin eingebetteten Tkinter-Widgets zu gelangen, die die entsprechenden Methoden mitbringen.

Konkret für dein Beispiel:

Code: Alles auswählen

from Tkinter import *
from Tix import *

def clearit():
    c.subwidget("listbox").delete(0,"end")
    c.subwidget("entry").delete(0,"end")

fenster = Tk()
c = ComboBox(master=fenster,editable=True)
c.insert(1, "eins")
c.insert(2, "zwei")
c.insert(3, "drei")
c.pick(0)
c.pack(padx=10,pady=10)
Button(fenster,text="Clear",command=clearit).pack()
fenster.mainloop()

Verfasst: Sonntag 11. Mai 2008, 08:46
von ck
Danke!
Das war genau das was ich gesucht habe.
EyDu hat geschrieben:Wäre es nicht klug, einfach mal den Teil zu posten der NICHT funktioniert? Sollen wir jetzt raten was bei dir "nicht funktioniert" oder ob es Fehlermeldungen gibt (und welche)? Sinnvoll ist immer ein minimales Stück Code, bei dem das Problem auftritt.
Es war kein Fehler,sondern ich habe nur nach dieser Funktion gesucht.
Ich habe es zwar mit

Code: Alles auswählen

c.clear()
und

Code: Alles auswählen

c.delete(0, END)
versucht, aber die Combobox hat keine Methode clear oder delete.
Ich habe in der Py-Doku auch nichts gefunden.

Nochmals vielen dank für eure Hilfe.

Verfasst: Sonntag 11. Mai 2008, 09:23
von EyDu
ck hat geschrieben:Es war kein Fehler,sondern ich habe nur nach dieser Funktion gesucht.
Ah ok, aber eine Aussage "Ich will den Inhalt der Liste von einer Combobox löschen, aber das funktioniert bei mir nicht" hat mir einfach etwas andere gesagt.

Bis dann.