Wenn connect
verwenden, nur Sie die aufrufbare Funktion
my_btn.clicked.connect(my_func)
In Ihrem Beispiel passieren, sind Sie Aufruf tatsächlich die my_func
Funktion vor dem Verbindungscode wird immer ausgeführt. Es versucht also, den von my_func
zurückgegebenen Wert zu verbinden, und es funktioniert nicht.
Was Sie tun möchten, ist eine partial
-Funktion zu erstellen, die eine Funktion ist, die bereits einige oder alle Funktionsargumente vorausgefüllt hat. Python hat eine Funktion in der Standard-Bibliothek, die diese functools.partial
from functools import partial
my_btn.clicked.connect(partial(my_func, my_int, my_str, my_second_int))
Dies schafft eine Teil Funktion aufgerufen tun kann, die my_func
mit den Positionsargumenten my_int
, my_str
und my_second_int
, und dass Teilfunktion verbunden ist, rufen wird die Taste clicked
Signal.
'my_btn.clicked.connect (lambda: my_func (mein_int, mein_str, mein_second_int))'. – ekhumoro