Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Butang Tkinter Saya Melaksanakan Perintahnya Serta-merta Selepas Dibuat?
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)
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)
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'))
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!