Heim > Backend-Entwicklung > Python-Tutorial > Wie übergebe ich zusätzliche Argumente an Qt-Slots mithilfe von Lambda-Funktionen oder functools.partial?

Wie übergebe ich zusätzliche Argumente an Qt-Slots mithilfe von Lambda-Funktionen oder functools.partial?

Mary-Kate Olsen
Freigeben: 2024-11-19 10:17:02
Original
582 Leute haben es durchsucht

How to Pass Extra Arguments to Qt Slots Using Lambda Functions or functools.partial?

Übergabe zusätzlicher Argumente über Connect

Beim Verbinden von Slots in Qt-Anwendungen kann es erforderlich sein, zusätzliche Argumente an die Slot-Funktion zu übergeben. Dies kann auf zwei Arten erfolgen: mithilfe von Lambda-Funktionen oder functools.partial.

Verwendung von Lambda-Funktionen

Mit Lambda-Funktionen können Sie zusätzliche Argumente als Schlüsselwortargumente übergeben, wenn Sie ein Signal mit einem Slot verbinden. Das Folgende ist die allgemeine Syntax:

connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
Nach dem Login kopieren

Wobei:

  • param1, param2, ...: Vom Signal empfangene Parameter
  • arg1, arg2, ...: Zusätzliche Parameter, die an die Slot-Funktion übergeben werden

In Ihrem Fall wäre der Code so sein:

self.buttonGroup.buttonClicked['int'].connect(lambda i: self.input(i, "text"))

@pyqtSlot(int)
def input(self, button_or_id, DiffP):
    # Use the extra argument `DiffP` in the slot function
    ...
Nach dem Login kopieren

Functools.Partial verwenden

Functools.partial bietet eine weitere Methode zum Übergeben zusätzlicher Argumente an Slot-Funktionen. Es erstellt eine neue Funktion, die an die angegebenen Argumente gebunden ist. Die allgemeine Syntax lautet:

partial(fun, args1, arg2, ... )
Nach dem Login kopieren

Wobei:

  • fun: Ziel-Slot-Funktion
  • args1, arg2, ...: Zusätzliche Argumente, die an die neue übergeben werden Funktion

So würden Sie es in Ihrem verwenden Code:

from functools import partial

...

self.buttonGroup.buttonClicked['int'].connect(partial(self.input, "text"))

@pyqtSlot(int)
def input(self, DiffP, button_or_id):
    # `DiffP` will be passed as the first argument to the slot function
    ...
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie übergebe ich zusätzliche Argumente an Qt-Slots mithilfe von Lambda-Funktionen oder functools.partial?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage