Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Meluluskan Hujah Unik kepada Berbilang Butang Tkinter Dicipta dalam Gelung?

Bagaimanakah Saya Boleh Meluluskan Hujah Unik kepada Berbilang Butang Tkinter Dicipta dalam Gelung?

Mary-Kate Olsen
Lepaskan: 2024-12-26 22:06:18
asal
729 orang telah melayarinya

How Can I Pass Unique Arguments to Multiple Tkinter Buttons Created in a Loop?

Memahami Penciptaan Butang dalam Tkinter dengan Argumen Perintah

Dalam Tkinter, mencipta berbilang butang dalam satu gelung boleh berguna untuk menjana antara muka pengguna yang dinamik. Walau bagaimanapun, menghantar argumen arahan kepada butang boleh menimbulkan cabaran, terutamanya apabila cuba membezakan butang yang ditekan.

Pertimbangkan kod berikut, di mana butang dicipta dengan tajuknya ditambah dengan pembilang gelung:

def createGameURLs(self):
    self.button = []
    for i in range(3):
        self.button.append(Button(self, text='Game '+str(i+1),
                                  command=lambda: self.open_this(i)))
        self.button[i].grid(column=4, row=i+1, sticky=W)

def open_this(self, myNum):
    print(myNum)
Salin selepas log masuk

Isu ini timbul apabila kami cuba mencetak pengecam butang (myNum) apabila mengklik mana-mana daripadanya. Output secara konsisten memaparkan 2, nilai lelaran terakhir. Tingkah laku ini menunjukkan bahawa butang pada asasnya tidak dapat dibezakan walaupun tajuknya unik.

Menyelesaikan Masalah

Untuk menyelesaikan isu ini, kita perlu memastikan bahawa setiap butang menangkap nilai tersendiri i di masa penciptaan. Untuk mencapai matlamat ini, kita boleh menggunakan teknik pintar dengan fungsi lambda:

def createGameURLs(self):
    self.button = []
    for i in range(3):
        self.button.append(Button(self, text='Game '+str(i+1),
                                  command=lambda i=i: self.open_this(i)))
        self.button[i].grid(column=4, row=i+1, sticky=W)

def open_this(self, myNum):
    print(myNum)
Salin selepas log masuk

Dengan menambahkan tugasan i=i dalam fungsi lambda, kami secara berkesan "membekukan" nilai semasa i pada masa lambda ditakrifkan. Ini memastikan setiap butang mengekalkan pengecam uniknya walaupun selepas gelung selesai.

Kesimpulan

Teknik ini membolehkan kami mencipta berbilang butang Tkinter secara dinamik dalam gelung, di mana setiap butang boleh dikenal pasti secara unik apabila diklik. Dengan memahami gelagat fungsi dan penutupan lambda, kami boleh mencapai lebih kawalan dan fleksibiliti dalam aplikasi Tkinter kami.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meluluskan Hujah Unik kepada Berbilang Butang Tkinter Dicipta dalam Gelung?. 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