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 :

combobox et choix


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 combobox et choix
    bonjour,
    j'ai un petit script qui contrôle le choix dans combobox cad il ne quitte le combo que si le choix est différent du "-----CHOIX-----" index 0 sinon un message d'erreur s’affiche
    le problème que j'ai c'est que quand j'appuis sur la flèche du combo j'ai le message or je souhaite que le message ne s’affiche que si je quitter le combo sans faire un choix




    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    from tkinter import *
    from tkinter.messagebox import *
    from tkinter import ttk
     
     
    fenetre_Creation_Proprietaire = Tk()
    fenetre_Creation_Proprietaire.title('CREATION PROPRIETAIRE')
    fenetre_Creation_Proprietaire.geometry("1150x450")
     
     
    def Quitter_Focus(StringT):
        Valeur=StringT.get()
        Longueur=len(Valeur)
        if 'CHOIX' in Valeur :
                showerror('Erreur: Saisie De Champ ', "Choix Du Mois Obligatoire")
                ChoixMois.focus_set()
     
     
     
    Label(fenetre_Creation_Proprietaire, bg='red',text="Mois") .place(x=110,y=20, height=25, width=50)
     
    ListeChoix=['-----CHOIX-----','JANVIER', 'FEVRIER','MARS','AVRIL']
    Choix_Mois = StringVar()
    ChoixMois = ttk.Combobox(fenetre_Creation_Proprietaire, state = 'readonly',values=ListeChoix,name="choixmois",textvariable = Choix_Mois)
    ChoixMois.place(x=165,y=20,height=25, width=115)
    ChoixMois.current(0)
    ChoixMois.focus_set()
    ChoixMois.bind('<FocusOut>', lambda e, : Quitter_Focus(Choix_Mois))
     
     
    LabNomPre=Label(fenetre_Creation_Proprietaire, bg='red',text="Nom & Prénom")
    LabNomPre.place(x=490,y=20, height=25, width=100)
    Nom_Pre=StringVar()
    NomPre=Entry(fenetre_Creation_Proprietaire, font=("Purisa", 13), bg="yellow",  justify="left",textvariable=Nom_Pre)
    NomPre.place(x=595,y=20, height=25, width=300)
    NomPre.bind('<Return>', lambda event: NumCin.focus_set())
    Nom_Pre.trace("w", lambda *a:Nom_Pre.set(Nom_Pre.get().upper()))
     
     
     
    fenetre_Creation_Proprietaire.mainloop()
    merci pour toute aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Salut,

    La ttk.Combobox hérite de ttk.Entry et est associé à une Listbox.
    De fait, un .bind ne va porter que sur l'Entry et non sur le composite.

    C'est un dialogue avec l'utilisateur, pour le forcer à renseigner le "mois", il va falloir faire autrement...

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

  3. #3
    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
    est-ce qu'il y a un autre moyen pour tester si le mois est renseigné dès que le focus quitte le mois
    je sais que tester le mois après avoir renseigné tous les champs n'est pas pratique

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Salut,

    Si le problème est d'attendre que la Combobox ait été renseignée avant de passer à autre chose, vous avez constaté qu'avec "focusout", çà ne fonctionnait pas.

    Si vous restez scotché à vouloir utiliser une Combobox, il va falloir imaginer d'autres conditions et arriver à le faire fonctionner.

    Par exemple, vous pourriez explorer comment exploiter un traitement de focusin sur la fenêtre principale. Si çà part ailleurs que dans la Combobox, on laisse faire si une valeur correcte a été saisie, sinon...

    note: c'est bien d'imaginer des interactions utilisateurs originales, mais après, il faut le coder (avec les outils, les connaissances et le temps qu'on a).


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

  5. #5
    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,


    Si vous restez scotché à vouloir utiliser une Combobox, il va falloir imaginer d'autres conditions et arriver à le faire fonctionner.

    - W
    ce n'est pas question d’être scotché ou pas mais je suis entrain de transformer un script écrit en VBA vers python donc le script VBA utilise un ComboBox
    bref sinon
    j'ai même essayer de ne pas faire le bind avec focusout sur ComboBox et de le faire sur Entry avec FocusIn ça ne marche pas non plus car il m'affiche deux fois le message d’erreur quand je passe à l'Entry nom sans faire le choix
    voici le code

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    from tkinter import *
    from tkinter.messagebox import *
    import tkinter.ttk as ttk
    fenetre_Creation_Proprietaire =Tk()
    fenetre_Creation_Proprietaire.title('CREATION PROPRIETAIRE')
    fenetre_Creation_Proprietaire.geometry("1150x450")
     
     
    def Quitter_Focus(Valeur):
     
        if ChoixMois.current() ==0 :
     
                showerror('Erreur: Saisie De Champ ', "Choix De Civilité Obligatoire")
     
                ChoixMois.focus_set()
     
     
    Label(fenetre_Creation_Proprietaire, bg='red',text="Mois") .place(x=110,y=20, height=25, width=50)
     
    ListeChoix=['-----CHOIX-----','JANVIER', 'FEVRIER','MARS','AVRIL']
    Choix_Mois = StringVar()
    ChoixMois = ttk.Combobox(fenetre_Creation_Proprietaire,state = 'readonly',values=ListeChoix,name="choix assujetti", textvariable =Choix_Mois)
    ChoixMois.place(x=165,y=20,height=25, width=115)
    ChoixMois.current(0)
    ChoixMois.focus_set()
    #ChoixMois.bind('<FocusOut>', lambda e, : Quitter_Focus(ChoixMois.get()))
     
    LabNomPre=Label(fenetre_Creation_Proprietaire, bg='red',text="Nom & Prénom")
    LabNomPre.place(x=490,y=20, height=25, width=100)
    Nom_Pre=StringVar()
    NomPre=Entry(fenetre_Creation_Proprietaire, font=("Purisa", 13), bg="yellow",  justify="left",textvariable=Nom_Pre)
    NomPre.place(x=595,y=20, height=25, width=300)
    Nom_Pre.trace("w", lambda *a:Nom_Pre.set(Nom_Pre.get().upper()))
    NomPre.bind('<FocusIn>', lambda e, : Quitter_Focus(ChoixMois.get()))
     
     
    fenetre_Creation_Proprietaire.mainloop()
    merci encore

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Salut,

    Citation Envoyé par THCH66 Voir le message
    ça ne marche pas non plus car il m'affiche deux fois le message d’erreur quand je passe à l'Entry nom sans faire le choix
    Si çà balance 2 events "focusin", le second arrive lorsque la boîte de dialogue attend la réponse. Mettez un "verrou" pour l'ignorer tant que la boite de dialogue est active.

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

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

Discussions similaires

  1. Combobox event choix
    Par Invité dans le forum C#
    Réponses: 2
    Dernier message: 25/02/2012, 09h45
  2. combobox et choix image
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/09/2011, 23h37
  3. combobox a choix multiple
    Par elgaied dans le forum Outils
    Réponses: 3
    Dernier message: 23/01/2010, 19h06
  4. ComboBox multi choix
    Par beet2che dans le forum VB.NET
    Réponses: 1
    Dernier message: 19/09/2008, 14h23
  5. [VB.NET] ComboBox de choix de couleurs
    Par Yorglaa dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/09/2005, 13h17

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