Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengelakkan Penduaan Parameter dalam Penciptaan Butang Tkinter Menggunakan For Loops?

Bagaimana untuk Mengelakkan Penduaan Parameter dalam Penciptaan Butang Tkinter Menggunakan For Loops?

Linda Hamilton
Linda Hamiltonasal
2024-12-18 19:48:11591semak imbas

How to Avoid Parameter Duplication in Tkinter Button Creation Using 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!

Kenyataan:
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