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))
Untuk butang disambungkan dalam gelung, masalahnya terletak pada ungkapan lambda:
button.clicked.connect(lambda x=idx: self.button_pushed(x))
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))
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!