Problem mit OptionMenu

Fragen zu Tkinter.
Antworten
wlinsmayer
User
Beiträge: 1
Registriert: Donnerstag 18. Dezember 2014, 16:36

Hallo,

ich bin noch ein ziemlicher Neuling in Python, habe aber schon viel gelesen und bin daher nicht ganz unbedarft. Aber für dieses Problem habe ich bisher keine Lösung gefunden.

Mit diesem Code

Code: Alles auswählen

spielername = StringVar(input_win)
spielername.set('Name')

choices = (('1','Lukas'), 
			('2','Stephan'), 
			('3','Tim'), 
			('4','Shawn'), 
			('5','Tom'), 
			('6','Michael')
			)
option = OptionMenu(input_win, spielername, *choices)
option.pack()
erzeuge ich eine Drop-Down Box, in der die Rückennummer und der Name der Spieler auswählbar sind. Mittlerweile hab ich es sogar geschafft, die Liste aus einem Dictionary zu holen. Aber obwohl die Liste im Dictionary nach Nummern aufsteigend sortiert ist, werden die Werte im Dropdown Feld wild durcheinander gewürfelt, und die Namen werden in geschweiften Klammern dargestellt. Wie kann ich das ändern?

Außerdem möchte ich, daß nicht der ganze Eintrag in meine Variable gespeichert wird, sondern nur einer der beiden Werte (bevorzugt die Nummer). Denn wenn ich die Variable spielername ausgeben lasse, bekomme ich ('1', 'Lukas'), und nicht 1 oder Lukas. Und das ist leider für die weitere Verwendung völlig unbrauchbar.

Danke für eure Hilfe!

Grüße,
Wolfgang
BlackJack

@wlinsmayer: Wörterbücher (`dict`) haben keine Ordnung, da kann also nichts nach Nummer sortiert drin sein. Eventuell kann ein `collections.OrderedDict` helfen.

Ansonsten ist Tk halt ein wenig vorsintflutlich, Du kannst da nur das bekommen was angezeigt wird und nicht irgendwelche Daten für die einzelnen Punkte hinterlegen. Übliche Lösung: Ein Wörterbuch angelegen das die Beschriftung auf den gewünschten Wert abbildet. Und `choices` sollte dafür eine Sequenz von *Zeichenketten* sein, und keine Tupel. Tk macht letztendlich aus allem Zeichenketten, aber so kann man ja kein Wörterbuch vorher aufbauen.
Antworten