Maison > développement back-end > Tutoriel Python > Pourquoi l'ordre Bindtag dans Tkinter affecte-t-il la visibilité de la valeur de l'événement ?

Pourquoi l'ordre Bindtag dans Tkinter affecte-t-il la visibilité de la valeur de l'événement ?

DDD
Libérer: 2024-12-06 02:12:11
original
408 Les gens l'ont consulté

Why Does Bindtag Order in Tkinter Affect Event Value Visibility?

Comprendre les Bindtags dans Tkinter

Lorsque vous travaillez avec Tkinter, les bindtags jouent un rôle crucial dans la gestion des événements. Comme vous l'avez mentionné dans votre question, l'ordre des bindtags peut avoir un impact sur la visibilité des valeurs d'événement. Explorons pourquoi ce comportement se produit.

Dans Tkinter, lorsqu'un événement est déclenché, le système vérifie les liaisons attachées aux diverses balises de liaison associées au widget qui a reçu l'événement. Par défaut, ces balises de liaison incluent le widget lui-même, sa classe et certaines balises globales.

Premier cas : balises de liaison par défaut

Lors de l'utilisation de balises de liaison par défaut pour vos widgets d'entrée , l'ordre est : ('.entry1', 'Entry', '.', 'all'). Cela signifie :

  1. L'événement est d'abord vérifié par rapport à la balise de liaison associée au widget ('.entry1').
  2. Si aucune liaison n'est trouvée, il vérifie la balise de liaison pour la classe du widget ("Entry").
  3. Si toujours aucune liaison ne correspond, il passe à la balise de liaison générale ('.') et à la balise de liaison globale (« tous »).

Problème : Dans ce cas, la valeur de l'événement n'est pas visible dans la définition de la fonction car elle est récupérée à l'aide de event.widget.get(). Au moment où la fonction est appelée, la liaison de classe a déjà été exécutée et la valeur de l'événement (dans notre cas, le caractère "x") a été insérée dans le widget.

Deuxième cas : modifié Bindtags

Dans le deuxième cas, l'ordre des bindtags pour le troisième widget d'entrée est modifié comme suit : ('.entry1','Entry','post-class-bindings', '.', 'all').

  • La balise de liaison 'post-class-bindings' est ajoutée avant le global tags.
  • Cela signifie que l'événement est d'abord vérifié par rapport au widget bindtag ('.entry1').
  • Si aucune liaison n'est trouvée, il vérifie la balise de liaison de classe (« Entrée »).
  • Si toujours aucune liaison ne correspond, il passe aux « liaisons post-classe », où le comportement modifié se produit.
  • Surtout : La valeur de l'événement est récupérée à ce stade, avant que la liaison de classe ne soit exécutée et n'insère le caractère dans le widget.
  • Par conséquent, la valeur est toujours disponible.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal