Melaksanakan Fungsi dari semasa ke semasa dalam Tkinter
Dalam pengaturcaraan dipacu peristiwa, aplikasi berjalan secara berterusan, bertindak balas kepada peristiwa apabila ia berlaku. Daripada melaksanakan fungsi secara berurutan, pengaturcaraan dipacu peristiwa meletakkan fungsi pada baris gilir untuk dilaksanakan pada masa tertentu.
Kajian Kes: Animasi Segi Empat Berkelip
Untuk mencipta segi empat tepat berkelip animasi dalam Tkinter, kita boleh menentukan fungsi untuk animasi dan menjadualkannya untuk dijalankan pada selang waktu. Begini cara untuk mendekati masalah:
1. Tentukan Fungsi Animasi:
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)
Fungsi ini menogol warna segi empat tepat antara merah dan putih.
2. Jadualkan Fungsi:
Untuk membuat segi empat tepat berkelip berulang kali, kami menjadualkan fungsi kelipan untuk dijalankan selepas selang waktu tertentu:
root.after(1000, blink, rect, canv) root.after(2000, blink, rect, canv) root.after(3000, blink, rect, canv)
Selepas satu, dua dan tiga saat, warna segi empat tepat akan berubah dengan sewajarnya.
3. Lelaran Animasi (Pilihan):
Untuk membuat animasi berjalan selama-lamanya, kita boleh memanggil fungsi berkelip dalam dirinya:
def blink(rect, canvas): ... canvas.after(1000, blink, rect, canvas)
Pendekatan ini meneruskan animasi selama-lamanya sehingga berhenti syarat dipenuhi (cth., klik butang).
4. Pendekatan Berasaskan Kelas (Pilihan):
Untuk program yang lebih besar, disyorkan untuk menyusun kod sebagai kelas:
from tkinter import * classMyApp(Tk): def __init__(self): ... self.start_button = Button(self, text="start blinking", command=self.start_blinking) ... def start_blinking(self): ... canvas.after(1000, self.blink)
Pendekatan ini merangkumi logik animasi dalam kelas, menjadikannya lebih mudah untuk diuruskan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Animasi Segiempat Berkelip Menggunakan Kaedah `after()` Tkinter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!