Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengelakkan Penduaan Parameter dalam Penciptaan Butang Tkinter Menggunakan For Loops?
Mengatasi Penduaan Parameter Butang dalam Tkinter For Loops
Dalam Tkinter, mencipta butang melalui gelung for boleh memperkenalkan tingkah laku yang tidak dijangka jika penetapan parameter yang betul tidak dilaksanakan. Pertimbangkan coretan kod berikut:
users = {"Test": "127.0.0.0", "Test2": "128.0.0.0"} row = 1 for name in users: user_button = Tkinter.Button(self.root, text=name, command=lambda: self.a(name)) user_button.grid(row=row, column=0) row += 1
Hasil yang dimaksudkan ialah setiap butang menerima parameter uniknya sendiri daripada kamus pengguna. Walau bagaimanapun, menekan sebarang butang menyebabkan hanya nilai terakhir daripada kamus (cth. "Test2") dicetak.
Isu ini timbul kerana ungkapan lambda menggunakan pembolehubah nama yang sama sepanjang gelung. Setiap lelaran menimpa nilai sebelumnya, meninggalkan lambda dengan nama terakhir yang ditetapkan daripada gelung.
Penyelesaian: Parameter Kata Kunci Lalai dalam Lambda
Untuk menyelesaikan masalah ini, anda boleh gunakan parameter kata kunci lalai dalam ungkapan lambda anda. Berikut ialah kod yang diperbetulkan:
for name in users: user_button = Tkinter.Button(self.root, text=name, command=lambda name=name: self.a(name))
Dengan mengikat secara eksplisit nilai semasa pembolehubah nama pada hujah kata kunci nama lambda, lambda mengekalkan parameter yang betul untuk setiap butang. Setiap butang ditekan kini mencetuskan output parameter unik yang diingini.
Teknik ini dengan berkesan memastikan setiap butang mengekalkan penetapan parameter yang dimaksudkan dalam gelung for.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Penduaan Parameter dalam Penciptaan Butang Tkinter Menggunakan For Loops?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!