2012-05-24 18 views
6

Ich versuche, eine Funktion in einer PyQt-Klasse hinzuzufügen, aber es gibt mir immer einen Fehler zurück.Dynamische Schaltfläche in PyQt erstellen

# Error: TypeError: connect() slot argument should be a callable or a signal, not 'NoneType' # 
def commander (self, arg): 
    exec arg  

def aButton (self, layout, **kwargs): 
    name = kwargs.pop("name","Button") 
    command = kwargs.pop("command", "") 
    button = QtGui.QPushButton(name) 
    button.clicked.connect(self.commander(command)) 
    layout.addWidget(button) 
    return button 

jemand hier sein kann, mich zu lösen helfen können: ') Thx!

Antwort

20

Sie benötigen eine Funktion:

button.clicked.connect(lambda: self.commander(command)) 

Beachten Sie die Lambda wird die Auswertung der Funktionsaufruf zu vermeiden, wird es self.commander(command) nur so nennen, wenn Ja

+2

gut 'call' hehe .. –

+0

Danke! Es klappt ! – MObject

+1

okay! Ich bin neu hier;) thx nochmal :) – MObject

2

scheint, dass in

button.clicked.connect(self.commander(command)) 

self.commander(command) kehrt None anstelle eines Signals oder einer abrufbaren.

+0

geklickt haben, aber ich möchte nur einige Code auszuführen wenn die Schaltfläche angeklickt wird. Ich verstehe nicht, welchen Wert ich zurückgeben muss. zurück kompilieren (arg, '', 'exec') Ich versuche das, aber es ist das gleiche ... – MObject

Verwandte Themen