IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

DateEntry et Focus [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut DateEntry et Focus
    bonjour,
    j'ai crée deux champs DateEntry je veux dés que l'utilisateur sélectionne une date le focus passe à la date suivante
    j'ai essayer ce bout de code logiquement il doit marcher mais malheureusement le focus ne quitte pas la date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    from tkinter import *
    from tkcalendar import DateEntry
    fenetre_Creation_Contrat=Tk()
     
    fenetre_Creation_Contrat.geometry("950x450")
    fenetre_Creation_Contrat.configure(bg = "bisque")
     
    Date_Debut_Contrat=StringVar()
    DateDebutContrat=DateEntry(fenetre_Creation_Contrat,locale='fr_FR', date_pattern='dd/MM/yyyy',background='red', font=("Purisa", 13), bg='white',  justify="center",name="datedebutcontrat",textvariable=Date_Debut_Contrat)
    DateDebutContrat.delete(0,END)
     
    DateDebutContrat.focus_set()
     
    Date_Fin_Contrat=StringVar()
    DateFinContrat=DateEntry(fenetre_Creation_Contrat,locale='fr_FR', date_pattern='dd/MM/yyyy',background='red', font=("Purisa", 13), bg='white',  justify="center",name="datefincontrat",textvariable=Date_Fin_Contrat)
    DateFinContrat.delete(0,END)
     
     
    DateDebutContrat.place(x=255,y=75, height=25, width=110)
    DateFinContrat.place(x=385,y=75, height=25, width=110)
     
     
    DateDebutContrat.bind('<<DateEntrySelected>>',lambda *e:DateFinContrat.focus_set())
     
     
    fenetre_Creation_Contrat.mainloop()
    merci bien de me dire pourquoi le focus ne passe pas

  2. #2
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut
    c'est bon j'ai trouvé je ne sais pas si c'est la bonne mais ça marche
    j'ajoute un bind avec focus in qui passe au focus suivant

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 690
    Par défaut
    Salut,

    Citation Envoyé par THCH66 Voir le message
    pourquoi le focus ne passe pas
    Regardez la logique de base: l'entry affiche un calendar, l'utilisateur sélectionne une date, l'event <<DateEntrySelected>> va être généré (histoire de valider quelque chose s'il y a lieu).
    Dans ce dialogue, le focus passe de l'Entry au Calendar et doit revenir à l'Entry pour permettre à l'utilisateur de valider en passant à l'Entry suivante.

    Le focus passe à la 2ème Entry juste avant que la logique la remette sur la première: çà ne sert à rien (de le faire à ce moment là).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Regardez la logique de base: l'entry affiche un calendar, l'utilisateur sélectionne une date, l'event <<DateEntrySelected>> va être généré (histoire de valider quelque chose s'il y a lieu).
    Dans ce dialogue, le focus passe de l'Entry au Calendar et doit revenir à l'Entry pour permettre à l'utilisateur de valider en passant à l'Entry suivante.

    Le focus passe à la 2ème Entry juste avant que la logique la remette sur la première: çà ne sert à rien (de le faire à ce moment là).

    - W
    Bonjour,

    le focus passe de l'Entry au Calendar et doit revenir à l'Entry pour permettre à l'utilisateur de valider
    est ce qu'il y a un moyen pour que le focus passe directement au widget suivant car je part du fait que si l'utilisateur a sélectionné une date dans calendre il n'a plus besoin de valider l'Entry

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 690
    Par défaut
    Salut,

    Citation Envoyé par THCH66 Voir le message
    est ce qu'il y a un moyen pour que le focus passe directement au widget suivant car je part du fait que si l'utilisateur a sélectionné une date dans calendre il n'a plus besoin de valider l'Entry
    Il faut vous rappeler les bases de ce type de programmation: des évènements postés dans une file d'attente traités séquentiellement.
    Pour faire quelque chose "après" le traitement de l'évènement courant, il suffit de le placer à la fin de la file d'attente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                  DateDebutContrat.bind('<<DateEntrySelected>>',lambda *e: fenetre_Creation_Contrat.after_idle(DateFinContrat.focus_set))
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Il faut vous rappeler les bases de ce type de programmation: des évènements postés dans une file d'attente traités séquentiellement.
    Pour faire quelque chose "après" le traitement de l'évènement courant, il suffit de le placer à la fin de la file d'attente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                  DateDebutContrat.bind('<<DateEntrySelected>>',lambda *e: fenetre_Creation_Contrat.after_idle(DateFinContrat.focus_set))
    - W
    merci c'est exactement ce que je cherche
    je vous souhaite un bon week-end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rajout du focus
    Par Claythest dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/06/2003, 17h10
  2. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  3. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 15h00
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. focus en C
    Par killpilot dans le forum C
    Réponses: 8
    Dernier message: 19/04/2002, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo