2016-03-26 3 views
0

Das Befehlsarray enthält eine Liste von Tupeln, die jeweils einen Namen und die Funktion enthalten, die das Ereignis behandeln wird. Für jedes Paar wird eine neue Schaltfläche erstellt und einem QListWidget hinzugefügt. Das Problem ist, dass alle Tasten am Ende die gleiche Handler-Funktion aufrufen. Der letzte in der Liste. Ich habe mit meinem Debugger überprüft und es führt die Schleife korrekt durch die Liste und die richtige Handler-Funktion wird für jede Schleife übergeben.Schaltflächen in pyqt4 enden mit demselben Ereignishandler, obwohl sie nicht sollten

Dies ist die Funktion zum Generieren der Schaltflächen.

[EDIT] Just in versuchte Einstellung btn und Element zu keiner am Ende jeder Schleife. Es hat nicht funktioniert.

Antwort

1

Sie müssen einen Verweis auf jeden Handler behalten, sonst bleibt nur der letzte im Gültigkeitsbereich. Eine Möglichkeit, das zu tun, ist mit einem Standardargument:

btn.clicked.connect(lambda *args, handler=handler: handler(self)) 

Beachten Sie, dass clicked sendet immer den eingecheckten Zustand der Schaltfläche, so *args ist es zu vermeiden, dass das Standardargument clobbering.

+0

Danke. Das hat es gelöst. –

Verwandte Themen