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 :

[tkinter] Souci avec Combobox


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 42
    Par défaut [tkinter] Souci avec Combobox
    Bonjour,
    J'espère être dans la bonne section.
    J'ai besoin d'afficher un Combobox (une?) qui est sensé afficher une liste de thèmes. Cette liste doit être saisie par l'utilisateur et sauvegardée ensuite. Au démarrage de l'application, s'il y a présence du fichier contenant ces thèmes, alors la liste se charge dans la combobox sinon il n'y a qu'un seul élément à savoir "liste des thèmes".
    Ca c'est l'idée. Pour l'instant je teste diverses choses et je n'ai mis qu'un seule élément: "liste des thèmes".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    self.liste_themes = ('liste des thèmes')
    self.theme_selectionne.set(self.liste_themes[0])
    Le Combobox s'affiche mais il n'y a rien d'affiché dans la zone. En cliquant sur le bouton je vois que "liste des thèmes" est affiché sur trois éléments: "liste", "des", "thèmes".
    Si je rajoute un élément vide tout fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    self.liste_themes = ('liste des thèmes',' ')
    self.theme_selectionne.set(self.liste_themes[0])
    Auriez vous un début d'explication? Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 103
    Par défaut Combox suite
    Bonjour,

    pour afficher les items d'une combox tu utilises tout simplement la méthode .addItems

    cordialement,

    KM

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 42
    Par défaut
    Merci pour ta réponse.
    D'abord mon souci premier n'était pas d'insérer un item mais de comprendre le souci d'être obligé d'ajouter un élément vide pour que ce que je veux se fasse. Pourquoi chaque mot est placé sur des éléments de la combobox sinon? J'aime bien comprendre pourquoi ca cloche
    Je sais cependant que la question d'insérer un nouvel élément se pose. Mon second souci est que je regarde mes méthodes disponibles et je ne vois que "insert" et pas "addItem". Ai-je mal regardé? Je précise au cas ou que j'utilise ttk pour ma combobox puisque Tkinter n'en propose pas de similaire si j'ai bien compris.

    PS: après de multiples recherches, je suis encore plus embrouillé. Quasi rien trouvé de clair sur la façon d'ajouter un élément et de mettre à jour ma combobox une fois l'élément ajouté. Je me couche en espérant la venue d'une âme charitable

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

    Citation Envoyé par kerlouan Voir le message
    PS: après de multiples recherches, je suis encore plus embrouillé. Quasi rien trouvé de clair sur la façon d'ajouter un élément et de mettre à jour ma combobox une fois l'élément ajouté. Je me couche en espérant la venue d'une âme charitable
    Une combobox est la composition d'une Entry (qui affichera la sélection) et d'une Listbox (les différents choix possibles).
    Ce qui sera affiché dans la listbox est défini par l'attribut "values". Avec cb['values'] = (1, 2, 3).
    Les différents choix possibles seront 1, 2 ou 3. Mais si vous voulez qu'une de ces valeurs soit affiché dans l'entry, il faut le préciser via .current(index) ou "index" sera l'indice de la valeur dans la liste (1, 2, 3).
    .get et .set permettent de modifier le contenu d'entry et c'est à vous de tester s'il s'agit d'une valeur possible (ou pas).
    Je ne pense pas qu'on puisse ajouter un élément à la liste: il faut mettre à jour toute la liste cb['values'].

    La documentation de TCL/ttk est ici. Une mouture Python se trouve ici.
    Lorsque vous voulez découvrir le fonctionnement d'un widget, le plus simple est de lancer la console Python et de voir ce qu'il se passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    >>> cb = ttk.Combobox()
    >>> cb.pack()
    >>> cb['values'] = (1, 2, 3)
    >>> cb.current(1)
    En essayant les opérations trouvées dans la documentation.

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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 42
    Par défaut
    Merci beaucoup pour cette réponse rapide et détaillée.
    J'ai testé ce que tu me proposes avec cb.current(1): cela règle le souci de "liste des thèmes" qui s'affichait sur trois lignes quand je n'écrivais qu'un seul élément dans ma liste.
    Je fouille pas mal sur le net et je suis déjà tombé sur tes liens: je vais les garder précieusement. Je vais étudier cette histoire de combobox, voir comment on met à jour. J'ai envie de comprendre les choses et pas seulement recopier bêtement. J'apprécie donc beaucoup ta réponse. En tout cas si souci je reviens vous embêter.
    Merci encore.

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Pour répondre à ta première question, c'est la virgule qui fait le tuple pas les parenthèses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>> a = ('text')
    >>> type(a)
    <class 'str'>
    >>> a = 'texte',
    >>> type(a)
    <class 'tuple'>
    >>>

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

Discussions similaires

  1. [XL-2003] soucis avec combobox
    Par georgia-jag dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/09/2010, 11h26
  2. Souci avec des liens et combobox
    Par Mikysupernoodles dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/01/2008, 00h36
  3. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  4. Réponses: 4
    Dernier message: 16/02/2003, 12h16
  5. [VB6] [Interface] Grille avec combobox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/01/2003, 09h55

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