*args und event in einer Funktion zusammen?
Verfasst: Freitag 30. Juli 2010, 00:17
Hi,
habe mal wieder ein kleines Problem.
Ich wuerde gerne via checkbox verschiedene widget aktivieren bzw. deaktivieren je nach zustand der checkbox. Dieses arrangement habe ich fuer verschiedene "tabs" in einem wxNotebook.
Da jeder tab potentiell eine andere anzahl von widgets hat, die man mit Disable() bzw Enable() anrufen kann, dachte ich mir, mache ich eine generelle function mit *args als variable anzahl von argumenten (siehe darunter):
Der function call waere dann in meiner bluehenden Fantasie, in der alles geht, folgender:
Das problem ist jetzt, dass anscheinend sowohl *args als auch event als letztes argument stehen muss. Kennt jemand von euch einen weg, um dieses Problem herum? Habe leider nix gefunden in meiner suche nach antwort (Mark Lutz - Learning Python und google)
Es waere gut, wenn man das ganze mit einer funktion auffangen koennte anstatt fuer jeden tab eine andere funktion zu schreiben, weil das relativ viele tabs sind und ich wiederholen sehr unuebersichtlich finde.
Ich hoffe, ich habe nichts unglaublich offensichtliches uebersehen und eure zeit vergeudet.
Ich danke schonmal fuer euer feedback.
Gruss
Nebelhom
habe mal wieder ein kleines Problem.
Ich wuerde gerne via checkbox verschiedene widget aktivieren bzw. deaktivieren je nach zustand der checkbox. Dieses arrangement habe ich fuer verschiedene "tabs" in einem wxNotebook.
Da jeder tab potentiell eine andere anzahl von widgets hat, die man mit Disable() bzw Enable() anrufen kann, dachte ich mir, mache ich eine generelle function mit *args als variable anzahl von argumenten (siehe darunter):
Code: Alles auswählen
def onCheck(self, checkbox, *args, event): # gives a syntax error pointing to event as argument
if checkbox.GetValue: # the checkbox is ticked
for arg in args: # iterate of tuple
arg.Enable()
else: # the checkbox is un-ticked
for arg in args:
arg.Disable()
Der function call waere dann in meiner bluehenden Fantasie, in der alles geht, folgender:
Code: Alles auswählen
wx.EVT_CHECKBOX(self, id, partial(self.onCheck, *args)) # Gives a syntax error
Es waere gut, wenn man das ganze mit einer funktion auffangen koennte anstatt fuer jeden tab eine andere funktion zu schreiben, weil das relativ viele tabs sind und ich wiederholen sehr unuebersichtlich finde.
Ich hoffe, ich habe nichts unglaublich offensichtliches uebersehen und eure zeit vergeudet.
Ich danke schonmal fuer euer feedback.
Gruss
Nebelhom