jedes Bild in einem Ordner: Button und bei Klick Bild öffnen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Kegelkugel
User
Beiträge: 32
Registriert: Samstag 8. Januar 2011, 13:37
Wohnort: München
Kontaktdaten:

[gelöst!]

Hallo,

ich habe gerade folgendes Problem: Ich hab' eine Toolbar. Diese soll für jedes Bild in einem Ordner ein Symbol bekommen. Klickt man auf das Symbol, soll das Bild geöffnet werden.
Mein Code sieht zur Zeit so aus:

Code: Alles auswählen

toolbar = self.CreateToolBar()
for imgFile in images:
	imgTool = toolbar.AddLabelTool(wx.ID_ANY, ' ', wx.Bitmap("data/user/" + imgFile))
	self.Bind(wx.EVT_TOOL, lambda event: self.openImage(event, imgFile), imgTool)
toolbar.Realize()
Der Funktion self.openImage müssen event und Bilddatei-Name übergeben werden.
Der Fehler zur Zeit ist, dass egal, auf welches Symbol in der Toolbar ich klicke, es öffnet sich immer das letzte Objekt in der Reihe.
Kann mir jemand helfen?
Danke!

Grüße,
Markus
Zuletzt geändert von Kegelkugel am Montag 12. Dezember 2011, 17:29, insgesamt 2-mal geändert.
deets

Das liegt an deinem Lambda - der gebildete Closure bindet immer nur das letzte imgFile.

Mach stattdessen

Code: Alles auswählen

lambda event, imgFile=imgFile: self.openImage(event, imgFile)
Dann klappt's.
Kegelkugel
User
Beiträge: 32
Registriert: Samstag 8. Januar 2011, 13:37
Wohnort: München
Kontaktdaten:

:-)

Danke, funktioniert!
Antworten