Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Butang Tkinter Saya Melaksanakan Perintahnya pada Penciptaan Daripada Pada Klik?
Perlaksanaan Perintah Butang Semasa Penciptaan
Dalam Tkinter, apabila contoh Butang dimulakan dengan parameter arahan, fungsi yang berkaitan bertujuan untuk menjadi dilaksanakan apabila butang diklik. Walau bagaimanapun, dalam sesetengah kes, arahan itu boleh dilaksanakan serta-merta selepas penciptaan butang, bertentangan dengan kelakuan yang dijangkakan.
Analisis Contoh Kod
Pertimbangkan kod berikut:
from Tkinter import * admin = Tk() def button(an): print(an) print('het') b = Button(admin, text='as', command=button('hey')) b.pack() mainloop()
Huraian Masalah
Apabila anda menjalankan ini kod, butang kelihatan tidak berfungsi dengan betul. Daripada melaksanakan fungsi butang apabila diklik, ia mencetak 'hey' dan 'het' serta-merta selepas penciptaan.
Penjelasan
Isunya terletak pada cara arahan parameter sedang dimulakan. Baris:
command=button('hey')
sedang menghantar hasil panggilan fungsi butang('hai') kepada parameter arahan. Ini bersamaan dengan:
result = button('hey') command=result
Memandangkan fungsi butang('hai') dilaksanakan serta-merta dan mengembalikan hasilnya, arahan ditetapkan kepada hasil dan bukannya rujukan fungsi itu sendiri. Akibatnya, fungsi itu dilaksanakan serta-merta, bukannya apabila butang diklik.
Penyelesaian
Untuk menyelesaikan isu ini, anda mesti menghantar rujukan kepada butang berfungsi tanpa melaksanakannya. Untuk melakukan ini, hanya tinggalkan kurungan apabila memulakan parameter arahan:
command=button
Nota Tambahan
Atas ialah kandungan terperinci Mengapa Butang Tkinter Saya Melaksanakan Perintahnya pada Penciptaan Daripada Pada Klik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!