Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Butang Tkinter Saya Melaksanakan Perintahnya Serta-merta Daripada On Click?

Mengapa Butang Tkinter Saya Melaksanakan Perintahnya Serta-merta Daripada On Click?

Barbara Streisand
Lepaskan: 2025-01-03 15:50:39
asal
940 orang telah melayarinya

Why Does My Tkinter Button Execute Its Command Immediately Instead of On Click?

Mengapa Perlaksanaan Segera Perintah Butang Apabila Dibuat?

Dalam Tkinter, memberikan arahan kepada butang boleh membawa kepada tingkah laku yang tidak dijangka di mana arahan itu dilaksanakan serta-merta selepas penciptaan butang, bukan apabila ia diklik. Ini adalah kerana cara pilihan arahan berfungsi.

Apabila anda menentukan parameter arahan sebagai Button(... command=button('hey')), anda sebenarnya menghantar hasil panggilan butang(' hey') kepada pilihan arahan. Ini bermakna fungsi butang dilaksanakan serta-merta, dan nilai yang dikembalikan diberikan kepada parameter arahan.

Penyelesaian: Menghantar Rujukan kepada Fungsi

Untuk mengelakkan ini isu, anda perlu memberikan rujukan kepada fungsi dan bukannya melaksanakannya dengan segera. Ini boleh dilakukan menggunakan fungsi lambda, functools.partial atau fungsi perantaraan.

Menggunakan Fungsi Lambda

Fungsi Lambda menyediakan cara mudah untuk mencipta fungsi tanpa nama yang boleh dijadikan rujukan. Contohnya:

b = Button(... command=lambda: button('hey'))
Salin selepas log masuk

Fungsi lambda ini mencipta fungsi tanpa nama yang, apabila dipanggil, melaksanakan fungsi butang dengan hujah 'hai'. Rujukan ini kemudiannya boleh dihantar ke parameter arahan butang.

Pendekatan Alternatif

  • Functools.partial: Fungsi ini membenarkan anda untuk mencipta fungsi baharu yang sebahagiannya menggunakan argumen kepada yang sedia ada fungsi.
  • Fungsi Perantaraan: Anda boleh mencipta fungsi berasingan yang hanya membalut fungsi butang dengan argumen yang diingini.

Kesimpulan

Dengan menghantar rujukan kepada fungsi dan bukannya melaksanakannya serta-merta, anda boleh memastikan bahawa arahan butang dilaksanakan hanya apabila butang diklik, seperti yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Butang Tkinter Saya Melaksanakan Perintahnya Serta-merta Daripada On Click?. 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