Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menghantar Argumen Tambahan ke Slot Qt Menggunakan Fungsi Lambda atau functools.partial?
Apabila menyambungkan slot dalam aplikasi Qt, mungkin terdapat keperluan untuk menghantar argumen tambahan kepada fungsi slot. Ini boleh dilakukan dalam dua cara: menggunakan fungsi lambda atau functools.partial.
Fungsi Lambda membolehkan anda menghantar argumen tambahan sebagai argumen kata kunci apabila menyambung isyarat ke slot. Berikut ialah sintaks umum:
connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
Di mana:
Dalam kes anda, kod itu akan be:
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 ...
Functools.partial menyediakan kaedah lain untuk menghantar argumen tambahan kepada fungsi slot. Ia mencipta fungsi baharu yang terikat pada hujah yang ditentukan. Sintaks umum ialah:
partial(fun, args1, arg2, ... )
Di mana:
Begini cara anda menggunakannya dalam kod anda:
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 ...
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Argumen Tambahan ke Slot Qt Menggunakan Fungsi Lambda atau functools.partial?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!