Maison >développement back-end >Tutoriel Python >Comment puis-je exécuter du code personnalisé simultanément avec la boucle principale de Tkinter sans multithreading ?

Comment puis-je exécuter du code personnalisé simultanément avec la boucle principale de Tkinter sans multithreading ?

DDD
DDDoriginal
2024-12-16 14:51:12238parcourir

How Can I Run Custom Code Simultaneously with Tkinter's Mainloop Without Multithreading?

Exécuter du code personnalisé simultanément avec la boucle d'événements de Tkinter

Lors de l'utilisation de Tkinter, il devient évident que sa boucle d'événements consomme trop de temps de traitement , entravant l'exécution de code personnalisé. Plus précisément, dans un cas, une simulation d'un troupeau d'oiseaux nécessite un mouvement constant, mais ce mouvement est entravé par la domination du système par la boucle d'événements.

Pour résoudre ce problème et permettre au code personnalisé de s'exécuter simultanément avec la boucle principale sans la complexité du multithreading, la méthode after de l'objet Tk peut être utilisée.

from tkinter import *

root = Tk()

def move():
    # Custom code to update bird positions

root.after(2000, move)  # Schedule the move() function to run again in 2 seconds

root.mainloop()  # Start the Tkinter event loop

La méthode after planifie l'exécution d'une fonction après un intervalle spécifié. Ici, nous l'utilisons pour planifier l'exécution de la fonction move() toutes les 2 secondes, donnant à notre code personnalisé la possibilité de s'exécuter entre les itérations de la boucle d'événement.

La déclaration de la méthode after est la suivante :

def after(self, ms, func=None, *args):
    """Call function once after given time.

    MS specifies the time in milliseconds. FUNC gives the
    function which shall be called. Additional parameters
    are given as parameters to the function call.  Return
    identifier to cancel scheduling with after_cancel."""

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn