Apabila bekerja dengan Tkinter, memahami pengaturcaraan dipacu peristiwa adalah penting. Aplikasi anda terus menarik acara daripada baris gilir dan membalasnya.
Dalam percubaan anda untuk menghidupkan segi empat tepat berkelip, anda terjumpa isu masa. blink sedang melaksanakan sebelum gelung utama, menyebabkan tiada perubahan yang boleh dilihat.
Untuk membetulkannya, anda perlu menukar susunan pelaksanaan. Daripada memanggil blink daripada skrip, gunakan kaedah selepas Tkinter untuk menjadualkan pelaksanaan fungsi. Berikut ialah kod yang dilaraskan:
root.after(1000, blink, rect, canv) root.after(2000, blink, rect, canv) root.after(3000, blink, rect, canv)
Ini akan memanggil berkelip dengan selang masa tertentu, menukar warna segi empat tepat.
Untuk penyelesaian yang lebih umum, pertimbangkan untuk menentukan fungsi yang memanggil dirinya secara rekursif untuk mengendalikan logik berkelip. Ini membolehkan kawalan ke atas apabila berkelip harus berhenti.
def blink(rect, canvas): current_color = canvas.itemcget(rect, "fill") new_color = "red" if current_color == "white" else "white" canvas.itemconfigure(rect, fill=new_color) # If you want the rectangle to blink forever, use the following: canvas.after(1000, blink, rect, canvas) # Or, to control the number of blinks, use a counter: if blink_counter > 0: blink_counter -= 1 canvas.after(1000, blink, rect, canvas)
Akhir sekali, pertimbangkan untuk menggunakan pendekatan berasaskan kelas untuk menyusun kod anda. Ini menghapuskan keperluan untuk fungsi global dan memudahkan penghantaran hujah.
class MyApp(Tk): def __init__(self): super().__init__() # Define canvas, rectangle, blinking flag, and buttons def start_blinking(self): # Set the blinking flag to True self.do_blink = True self.blink() def stop_blinking(self): # Set the blinking flag to False self.do_blink = False def blink(self): if self.do_blink: # Change the rectangle's color and schedule the next blink ...
Dengan memahami sifat didorong peristiwa Tkinter dan menggunakan kaedah yang sesuai, anda boleh melaksanakan fungsi dengan berkesan dari semasa ke semasa dan mencipta animasi interaktif dalam GUI anda aplikasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Animasi Segiempat Berkelip dalam Tkinter Menggunakan Pendekatan Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!