Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengelakkan Menetapkan Semula Perintah Butang dalam Tkinter Untuk Gelung Menggunakan Fungsi Lambda?

Bagaimana untuk Mengelakkan Menetapkan Semula Perintah Butang dalam Tkinter Untuk Gelung Menggunakan Fungsi Lambda?

Linda Hamilton
Lepaskan: 2024-12-15 05:57:17
asal
663 orang telah melayarinya

How to Avoid Reassigning Button Commands in Tkinter For Loops Using Lambda Functions?

Menetapkan Perintah Butang dalam Tkinter For Loop menggunakan Lambda

Apabila mencipta butang dalam Tkinter for loop menggunakan fungsi lambda, adalah penting untuk mengelakkan menetapkan semula pembolehubah yang sama dalam gelung. Ini memastikan bahawa setiap butang menerima parameter unik.

Isu:

Dalam kod yang disediakan:

def a(self, name):
    print(name)

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

Fungsi lambda dalam untuk rujukan gelung pembolehubah nama yang sama, yang akan ditetapkan semula semasa setiap lelaran. Akibatnya, semua butang menggunakan fungsi yang sama dengan nilai terakhir yang diberikan kepada nama, membawa kepada tingkah laku yang salah.

Penyelesaian:

Untuk menyelesaikan isu ini, anda boleh mengikat nilai semasa pembolehubah nama pada hujah kata kunci lambda menggunakan parameter lalai:

user_button = Tkinter.Button(self.root, text=name,
                             command=lambda name=name: self.a(name))
Salin selepas log masuk

Secara lalai kata kunci argumen, fungsi lambda setiap butang mempunyai salinan unik pembolehubah nama, memastikan parameter yang betul digunakan apabila butang diklik.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Menetapkan Semula Perintah Butang dalam Tkinter Untuk Gelung Menggunakan Fungsi Lambda?. 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