Heim > Backend-Entwicklung > Python-Tutorial > Wie verbinde ich Slots richtig mit Lambda-Funktionen in PyQt?

Wie verbinde ich Slots richtig mit Lambda-Funktionen in PyQt?

Linda Hamilton
Freigeben: 2024-11-09 02:10:02
Original
401 Leute haben es durchsucht

How to Correctly Connect Slots with Lambda Functions in PyQt?

Slots mit Lambda-Funktionen in PyQt verbinden

Beim Versuch, Slots mit Lambda-Funktionen zu verbinden, ist es wichtig zu verstehen, wie Argumente gehandhabt werden. Im bereitgestellten Codebeispiel tritt das Problem auf, wenn mehrere Schaltflächen in einer Schleife verbunden werden.

In den ersten beiden Schaltflächen sind die Lambda-Ausdrücke korrekt definiert und verbunden:

button_1.clicked.connect(lambda x:self.button_pushed(1))
button_2.clicked.connect(lambda x:self.button_pushed(2))
Nach dem Login kopieren

Für die Schaltflächen Innerhalb der Schleife verbunden, liegt das Problem im Lambda-Ausdruck:

button.clicked.connect(lambda x=idx: self.button_pushed(x))
Nach dem Login kopieren

In diesem Fall gibt das Signal QPushButton.clicked ein Argument aus, das den Zustand des angibt Taste. Beim Herstellen einer Verbindung zum Lambda-Slot wird jedoch das optionale Argument idx durch den Status der Schaltfläche überschrieben.

Um dieses Problem zu beheben, sollte die Verbindung wie folgt definiert werden:

button.clicked.connect(lambda state, x=idx: self.button_pushed(x))
Nach dem Login kopieren

Dadurch wird ignoriert button state und übergibt den korrekten Wert an die button_pushed-Methode.

Zusammenfassend ist es wichtig, beim Herstellen einer Verbindung auf die Argumente zu achten, die an Lambda-Funktionen übergeben werden Slots. Durch die ordnungsgemäße Handhabung der Argumente des ausgegebenen Signals können Sie sicherstellen, dass die richtigen Werte an Ihre Methoden übergeben werden.

Das obige ist der detaillierte Inhalt vonWie verbinde ich Slots richtig mit Lambda-Funktionen in PyQt?. 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