Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menghantar Hujah Unik kepada Perintah dalam Gelung Butang Tkinter?

Bagaimana untuk Menghantar Hujah Unik kepada Perintah dalam Gelung Butang Tkinter?

Susan Sarandon
Lepaskan: 2024-12-31 22:33:15
asal
894 orang telah melayarinya

How to Pass Unique Arguments to Commands in Tkinter Button Loops?

Mencipta Butang Secara Program dalam tkinter dengan Argumen Perintah Unik

Tugas yang ada ialah menjana beberapa butang dalam antara muka tkinter menggunakan gelung for . Setiap butang harus mengandungi hujah perintah unik yang mewakili kiraan lelaran semasa. Walau bagaimanapun, kod sedia ada menghasilkan butang dengan nilai cetakan yang konsisten, menunjukkan kemungkinan isu dengan penugasan hujah perintah.

Isu: Menghilang Nilai Lelaran

Kod yang disediakan mencipta butang dengan tajuk daripada "Permainan 1" hingga "Permainan 3." Apabila mengklik mana-mana butang ini, nilai yang dicetak sentiasa 2, sepadan dengan kiraan lelaran terakhir. Ini menunjukkan bahawa argumen perintah dianggap sebagai satu entiti, dan bukannya dikaitkan dengan setiap butang individu.

Penyelesaian: Mengekalkan Nilai Lelaran

Kunci kepada menyelesaikan isu ini terletak pada mengekalkan nilai lelaran semasa (i) apabila menentukan arahan untuk setiap butang. Untuk mencapai matlamat ini, ungkapan lambda yang diubah suai diperlukan:

command=lambda i=i: self.open_this(i)
Salin selepas log masuk

Ungkapan lambda ini memberikan nilai semasa i kepada pembolehubah bernama i. Ini memastikan bahawa nilai i ditangkap dan dilampirkan pada butang tertentu pada masa penciptaan. Akibatnya, setiap butang akan mempunyai akses kepada kiraan lelaran uniknya.

Memahami Penutupan Lambda

Dengan menggunakan i=i, penutupan menyimpan nilai semasa i pada masa lambda ditakrifkan, dan bukannya bergantung pada nilai i pada masa fungsi dipanggil. Ini mengekalkan maklumat yang diperlukan untuk setiap butang.

Kod Tetap

Dengan pengubahsuaian yang dinyatakan di atas, kod yang diperbetulkan muncul seperti berikut:

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

Sekarang, apabila mengklik mana-mana butang, kiraan lelaran yang sepadan akan dicetak dengan tepat, menyelesaikan isu.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Hujah Unik kepada Perintah dalam Gelung Butang Tkinter?. 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