Combobox.clear()

Fragen zu Tkinter.
Antworten
ck
User
Beiträge: 11
Registriert: Samstag 10. Mai 2008, 17:44
Kontaktdaten:

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?
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

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
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
ck
User
Beiträge: 11
Registriert: Samstag 10. Mai 2008, 17:44
Kontaktdaten:

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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()
ck
User
Beiträge: 11
Registriert: Samstag 10. Mai 2008, 17:44
Kontaktdaten:

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.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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