Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mencipta Animasi Segiempat Berkelip Menggunakan Kaedah `after()` Tkinter?

Bagaimanakah Saya Boleh Mencipta Animasi Segiempat Berkelip Menggunakan Kaedah `after()` Tkinter?

Mary-Kate Olsen
Lepaskan: 2024-12-21 06:30:10
asal
394 orang telah melayarinya

How Can I Create Blinking Rectangle Animations Using Tkinter's `after()` Method?

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

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