Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Butang Tkinter Saya Melaksanakan Perintahnya Serta-merta Selepas Dibuat?

Mengapa Butang Tkinter Saya Melaksanakan Perintahnya Serta-merta Selepas Dibuat?

Susan Sarandon
Lepaskan: 2024-12-21 03:36:16
asal
278 orang telah melayarinya

Why Does My Tkinter Button Execute Its Command Immediately Upon Creation?

Perlaksanaan Perintah Butang semasa Penciptaan

Dalam kod yang disediakan, widget Button dicipta dengan pilihan arahannya ditetapkan kepada hasil daripada menggunakan berfungsi dengan hujah, menghasilkan pelaksanaan segera arahan. Untuk menangani isu ini, adalah penting untuk memahami cara pengendalian acara berfungsi dalam Tkinter.

Dalam Tkinter, pengendalian acara berfungsi dengan mengaitkan fungsi dengan acara (cth., klik butang). Apabila peristiwa itu berlaku, Tkinter menggunakan fungsi yang berkaitan. Walau bagaimanapun, dalam kod yang disediakan, pilihan arahan mengandungi hasil daripada menggunakan butang fungsi('hai') dan bukannya rujukan kepada fungsi itu sendiri.

Oleh itu, kod pada dasarnya melakukan perkara yang sama seperti:

result = button('hey')
b = Button(admin, text='as', command=result)
Salin selepas log masuk

Akibatnya, arahan itu dilaksanakan serta-merta apabila Butang dibuat, mencetak 'hey' dan 'het', dan apabila butang itu diklik, tiada apa-apa berlaku kerana arahan itu telah dilaksanakan.

Untuk membetulkan ini, pilihan arahan harus mengandungi rujukan kepada fungsi, bukan hasil seruannya. Contohnya:

b = Button(admin, text='as', command=button)
Salin selepas log masuk

Sebagai alternatif, jika arahan memerlukan hujah, seseorang boleh menggunakan fungsi lambda, yang membenarkan definisi fungsi sebaris. Contohnya:

b = Button(admin, text='as', command=lambda: button('hey'))
Salin selepas log masuk

Ini mencipta fungsi tanpa nama yang, apabila dipanggil, memanggil butang('hai'), memberikan kefungsian yang diingini.

Atas ialah kandungan terperinci Mengapa Butang Tkinter Saya Melaksanakan Perintahnya Serta-merta Selepas Dibuat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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