Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menghantar Argumen Tambahan ke Slot Qt Menggunakan Fungsi Lambda atau functools.partial?

Bagaimana untuk Menghantar Argumen Tambahan ke Slot Qt Menggunakan Fungsi Lambda atau functools.partial?

Mary-Kate Olsen
Lepaskan: 2024-11-19 10:17:02
asal
633 orang telah melayarinya

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

Melalui Argumen Tambahan melalui Sambung

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.

Menggunakan Fungsi Lambda

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, ....))
Salin selepas log masuk

Di mana:

  • param1, param2, ...: Parameter yang diterima oleh isyarat
  • arg1, arg2, ...: Parameter tambahan diserahkan kepada fungsi slot

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
    ...
Salin selepas log masuk

Menggunakan Functools.Partial

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, ... )
Salin selepas log masuk

Di mana:

  • seronok: Fungsi slot sasaran
  • args1, arg2, ...: Argumen tambahan diserahkan kepada yang baharu fungsi

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
    ...
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan