Rumah > Artikel > pembangunan bahagian belakang > Mengapa Parameter \'arahan\' Button Melaksanakan Serta-merta dalam Python?
Pustaka tkinter Python menawarkan keupayaan untuk mencipta antara muka pengguna grafik (GUI) dengan mudah. Salah satu elemen pentingnya ialah widget Button, yang membolehkan pengguna berinteraksi dan mencetuskan tindakan dalam GUI. Walau bagaimanapun, apabila bekerja dengan parameter "arahan" Button, adalah penting untuk memahami sebab fungsi yang diperuntukkan mungkin dilaksanakan serta-merta.
Masalah:
Apabila memperuntukkan objek fungsi kepada parameter "perintah" widget Butang, fungsi itu mungkin dilaksanakan walaupun sebelum butang ditekan. Tingkah laku ini boleh mengelirukan bagi pemula yang mengharapkan fungsi panggil balik hanya dilaksanakan sebaik sahaja butang berinteraksi.
Jawapan:
Pelaksanaan fungsi semasa tugasan parameter "perintah" adalah disebabkan oleh perbezaan antara objek fungsi dan nilai yang dikembalikan.
Apabila anda menetapkan objek fungsi (function_name) kepada parameter "perintah", Python mentafsirkannya sebagai menghantar fungsi sebenar yang akan dilaksanakan sebagai panggilan balik. Ini bermakna fungsi segera berjalan, mengembalikan nilainya (biasanya Tiada jika fungsi tidak mengembalikan apa-apa secara eksplisit).
Penyelesaian:
Untuk menetapkan objek fungsi dengan betul (dan bukan nilainya yang dikembalikan), tanpa mencetuskan pelaksanaannya lebih awal, anda hanya perlu menentukan nama fungsi tanpa tanda kurung:
<code class="python">command=Hello</code>
Ini mengekalkan objek fungsi dan memastikan bahawa panggilan balik hanya dilaksanakan apabila butang dihidupkan sebenarnya ditekan.
Pertimbangan untuk Melepasi Hujah:
Jika anda perlu menghantar hujah kepada fungsi panggil balik, anda boleh menggunakan ungkapan lambda untuk mencipta boleh panggil tanpa parameter:
<code class="python">command=lambda: Goodnight("Moon")</code>
Ekspresi lambda merangkum panggilan ke fungsi Goodnight("Moon"), menangguhkan pelaksanaannya sehingga butang diklik.
Atas ialah kandungan terperinci Mengapa Parameter \'arahan\' Button Melaksanakan Serta-merta dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!