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

Tkinter Python Discussion :

Combobox : récupérer la SAISIE pour l'ajouter dans la liste "values" [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai Avatar de Falenn
    Femme Profil pro
    Prise de tête
    Inscrit en
    Mars 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Prise de tête

    Informations forums :
    Inscription : Mars 2021
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Combobox : récupérer la SAISIE pour l'ajouter dans la liste "values"
    Bonjour,

    Je cherche à récupérer la variable saisie par l'utilisateur dans une combobox.
    La méthode .get() me permet de récupérer la variable existante dans la liste "values", mais je n'ai pas trouvé de commande pour récupérer la saisie ...

    Petit bout de code en démo :
    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
     
    import tkinter as tk
    import tkinter.ttk as ttk
    global liste ; liste = [0,1,2,3]
    #
    def suite(event) :    
        choix = cbb.get()   ; print(choix)
        liste.append(choix) ; print(liste)
        etc()
     
    def etc():
        cbb = ttk.Combobox(fnt, values = liste)
        cbb.bind("<<ComboboxSelected>>", suite)
        cbb.place(x=0,y=0)
    #
    fnt = tk.Tk()
    cbb = ttk.Combobox(fnt, values = liste)
    cbb.bind("<<ComboboxSelected>>", suite)
    cbb.pack()
    fnt.mainloop()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    .get() fonctionne... après si vous écrivez un code approximatif pour faire joli, pas facile de voir où est l'erreur (s'il y en a)

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

  3. #3
    Membre à l'essai Avatar de Falenn
    Femme Profil pro
    Prise de tête
    Inscrit en
    Mars 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Prise de tête

    Informations forums :
    Inscription : Mars 2021
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Je me suis peut-être mal fait comprendre ...

    Avec la combobox (mix listbox et entry), on est sensés pouvoir saisir une/des valeur(s), en plus de celles déjà contenues dans la liste "values".
    Je ne sais pas comment récupérer la valeur SAISIE.
    Avec .get(), je ne récupère que les items de "values".

    Le bout de code sert à illustrer le problème : taper ce que vous voulez (ex : toto!) , il ne devient pas la variable "choix" avec .get().

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Falenn Voir le message
    Le bout de code sert à illustrer le problème : taper ce que vous voulez (ex : toto!) , il ne devient pas la variable "choix" avec .get().
    L'évènement ComboboxSelected correspond à une sélection par l'utilisateur d'une entrée dans la liste.
    Et lorsque cet évènement appelle le callback suite, ben, si l'utilisateur avait saisi autre chose, c'est effacé et remplacé par...

    Ajoutez un Button pour aller exécuter un .get "à la demande" et vous verrez que çà fonctionne. Après interfacer l'Entry de la combobox pour que.... est à inventer en fonction de vos besoins (et de la documentation de la combobox).

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

  5. #5
    Membre à l'essai Avatar de Falenn
    Femme Profil pro
    Prise de tête
    Inscrit en
    Mars 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Prise de tête

    Informations forums :
    Inscription : Mars 2021
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Après interfacer l'Entry de la combobox pour que.... est à inventer en fonction de vos besoins (et de la documentation de la combobox).

    - W
    C'est exactement ce que je veux !
    Mais je n'ai trouvé aucune explication sur la méthode à suivre.
    Je pense laisser tomber ce widget totalement inutile dans mon cas et faire un mix entre une "entry" et une série de boutons. avec relief "flat", etc ... pour "faire croire" à une combobox.
    Le langage Tkinter est vraiment très pauvre. On en a pour son argent !

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Falenn Voir le message
    Mais je n'ai trouvé aucune explication sur la méthode à suivre.
    Il suffit d'ouvrir la documentation vous avez l'attribut "postcommand" pour çà.

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

  7. #7
    Membre à l'essai Avatar de Falenn
    Femme Profil pro
    Prise de tête
    Inscrit en
    Mars 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Prise de tête

    Informations forums :
    Inscription : Mars 2021
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    J'ai fini par trouver sur stackoverflow.com
    Il suffit de créer un "bind" avec un "return" après saisie clavier.
    Le .get() se fait sur "textvariable".

    Merci W, pour votre implication. Je retiens le lien vers la documentation en anglais, mais avec google traduction, je m'en sortirai.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Falenn Voir le message
    J'ai fini par trouver sur stackoverflow.com
    Il suffit de créer un "bind" avec un "return" après saisie clavier.
    Le .get() se fait sur "textvariable".
    La façon documentée est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import tkinter as tk
    import tkinter.ttk as ttk
     
    values = list('0123')
     
    def do_add():
        v = cbb.get()
        if v and v not in values:
            values.append(v)
            cbb['values'] = values
     
    cbb = ttk.Combobox(values = values, postcommand=do_add)
    cbb.pack()
    tk.mainloop()

    Citation Envoyé par Falenn Voir le message
    Je retiens le lien vers la documentation en anglais, mais avec google traduction, je m'en sortirai.
    Dans le mode "open source", la plupart des documentations sont en anglais technique excepté pour les logiciels qui ont une communauté suffisante pour arriver à traduire (Python, Django dans le mode Python sont des exemples).

    Et de toutes façons, même traduite, lire une documentation technique se fait de façon active: on essaie de coder pour voir si on a bien compris ce que çà raconte.

    - 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. Réponses: 1
    Dernier message: 16/10/2008, 17h20
  2. [MooTools] Request,comment récupérer le contenu pour l'utiliser dans le script ?
    Par dawadam dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 09/07/2008, 23h22
  3. Récupérer une variable pour l'afficher dans un Edit Text
    Par maiza_med dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 30/04/2008, 10h14
  4. Réponses: 6
    Dernier message: 30/11/2007, 12h01
  5. Réponses: 8
    Dernier message: 13/09/2005, 21h05

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