Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menyambungkan Slot dengan betul dengan Fungsi Lambda dalam PyQt?

Bagaimana untuk Menyambungkan Slot dengan betul dengan Fungsi Lambda dalam PyQt?

Linda Hamilton
Lepaskan: 2024-11-09 02:10:02
asal
403 orang telah melayarinya

How to Correctly Connect Slots with Lambda Functions in PyQt?

Menyambungkan Slot dengan Fungsi Lambda dalam PyQt

Apabila cuba menyambungkan slot dengan fungsi lambda, adalah penting untuk memahami cara hujah dikendalikan. Dalam contoh kod yang disediakan, isu timbul apabila menyambungkan berbilang butang dalam satu gelung.

Dalam dua butang pertama, ungkapan lambda ditakrifkan dan disambungkan dengan betul:

button_1.clicked.connect(lambda x:self.button_pushed(1))
button_2.clicked.connect(lambda x:self.button_pushed(2))
Salin selepas log masuk

Untuk butang disambungkan dalam gelung, masalahnya terletak pada ungkapan lambda:

button.clicked.connect(lambda x=idx: self.button_pushed(x))
Salin selepas log masuk

Dalam kes ini, isyarat QPushButton.clicked mengeluarkan hujah yang menunjukkan keadaan butang. Walau bagaimanapun, apabila menyambung ke slot lambda, idx argumen pilihan ditimpa oleh keadaan butang.

Untuk menyelesaikannya, sambungan hendaklah ditakrifkan seperti berikut:

button.clicked.connect(lambda state, x=idx: self.button_pushed(x))
Salin selepas log masuk

Ini mengabaikan keadaan butang dan hantar nilai yang betul kepada kaedah button_pushed.

Ringkasnya, adalah penting untuk mengambil kira hujah yang dihantar kepada fungsi lambda semasa menyambungkan slot. Dengan mengendalikan hujah isyarat yang dipancarkan dengan betul, anda boleh memastikan bahawa nilai yang betul dihantar kepada kaedah anda.

Atas ialah kandungan terperinci Bagaimana untuk Menyambungkan Slot dengan betul dengan Fungsi Lambda dalam PyQt?. 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