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] Ajouter un element dans OptionMenu [Fait]


Sujet :

Tkinter Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut [Tkinter] Ajouter un element dans OptionMenu
    Bonjour,

    J'utilise le widget OptionMenu comme combobox en Tkinter.

    J'ai un fichier qui contient une liste d'OS :

    NT
    LINUX
    AIX
    HPUX
    SUN


    Dnas mon code, je lis chaque ligne de mon fichier et je crée le widget optionMenu.

    Ma question est comment ajouter dans la combobox chaque ligne de mon fichier?

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    self.TypeOS = StringVar()
    		TypeFrameOS=Frame(parameter_frame)
    		f=open('config.cfg','rb')
    		lines=f.readlines()
    		for items in lines:
    			items = items.rstrip('\n')
    			print items
    		f.close()
    menu_rendering1 = OptionMenu(TypeFrameOS,self.TypeOS,"NT")
    		menu_rendering1.config(width=15)
    		menu_rendering1.pack(side="top", expand=1, anchor="n", fill="both", pady=20)
    		menu_rendering1.bind('<Button-1>', self.get_OS)
    		TypeFrameOS.grid(row = 0, column =2,padx = 40, sticky="news")
    merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Si tu veux des vraies combobox, utilises Tix (ou bien Pmw: http://python.developpez.com/outils/Librairies/ ) - l'avantage de Tix, c'est que tu n'as rien besoin de télécharger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import Tix
    root = Tix.Tk()
    combo = Tix.ComboBox(root)
    combo.insert(0, 'NT')
    combo.insert(1,'Linux')
    combo.pack()
    root.mainloop()

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Ok, merci, je vais essayer ça!

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    je peux l'ajouter comme ça dans mon code, ou je suis obligé de réecrire mon code en utilisant les widgets associés à Tix? Car dans mon programme, j'ai des Labels, des Buttons, des Entry....

  5. #5
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    à priori, il suffit juste de déclarer ta fenêtre principale avec Tix et le reste peut-être des objets Tkinter ou Tix

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Ok, merci ça marche!

    je ne mets pas résolu, je vais rechercher comment recuperer la valeur selectionnée dans la combobox

  7. #7
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Pour récupérer la valeur sélectionnée, c'est comme avec Tkinter, il faut créer une variable qui contient la valeur sélectionnée dans la combo. et avec varcombo.get() on récupère cette valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import Tix
     
    def Affiche(evt):
        print varcombo.get()
    root = Tix.Tk()
    varcombo = Tix.StringVar()
    combo = Tix.ComboBox(root, variable=varcombo, command = Affiche) 
    combo.insert(0, 'NT') 
    combo.insert(1,'Linux') 
    combo.pack() 
    root.mainloop()
    le truc bizarre, c'est que la valeur sélectionnée n'est pas affiché dans la textbox (il doit quand même y avoir un truc pour que ca s'affiche dedans aussi)

    Sinon avec Pmw. Idem, on peut utiliser Tix, Pmw et Tkinter en même temps. C'est beaucoup plus simple d'utilisation. La valeur est directement récupéré dans la fonction définit par selectioncommand (c'est le paramètre de la fonction Affiche qui va correspondre à cette valeur sélectionnée)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import Tix
    import Pmw
     
    def Affiche(text):
        print text
    root = Tix.Tk()
    combo = Pmw.ComboBox(root, selectioncommand = Affiche) 
    combo.insert(0, 'NT') 
    combo.insert(1,'Linux') 
    combo.pack() 
    root.mainloop()

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Bonjour,

    j'avais trouvé comment recuperer la variable, mais il est vrai que si on ne veut pas que la coombobox soit editable, la valeur sélectionné ne s'affiche pas, c'est bien embetant!

    Merci du coup de main!

  9. #9
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Pour que l'entry de la combo ne soit pas éditable, il suffit de configurer l'état de l'entry comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    combo = Tix.ComboBox(root, editable=1, dropdown=1, variable=varcombo, command = Affiche)
    combo.entry.config(state='readonly')

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Merci Beaucoup!!!!!!

    Voila mon programme marche, merci pour votre aide!

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Bonjour,

    désolé de réouvrir ce sujet, mais je butte sur un problème. J'ai beua cherché sur le net, je ne trouve pas la méthode me permettant d'effacer le contenu de ma combobox!

    Avez-vous un lien, ou un exemple.

    Mon probleme est :

    je génère un fichier .cfg :

    par la suite je regénére ce fichier, mais en effaçant le contneu :
    donc dans ma combo box , il ne devrait y avoir que "var4, var5, var6' or j'ai toutes les variables. Donc je voudrais effacer le contneu de ma combobox

    Merci de votre aide

  12. #12
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Je relance le sujet car je voudrais savoir s'il est possible de recuperer la valeur index plutot que la string.

    par exempe:
    combo.insert(0, 'one')
    combo.insert(1, 'deux' )
    ...

    et que si je selectionne 'one' avec la fonction du selectioncommand j'affiche 0 est pas 'one'

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut varcombo2 =StringVar()
    Bonjour
    J'aimerai bien savoir ce que veux dire: varcombo2 =StringVar()
    Merci


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

Discussions similaires

  1. Ajouter des elements dans un datagrid ou un listview
    Par Seb33300 dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 11/04/2007, 10h37
  2. Pb d'ajout d'element dans un liste
    Par profx dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 27/02/2007, 17h49
  3. Réponses: 5
    Dernier message: 08/05/2006, 22h32
  4. ajouter un element dans un formulaire
    Par jojo57 dans le forum Access
    Réponses: 5
    Dernier message: 13/04/2006, 22h18
  5. Réponses: 12
    Dernier message: 26/02/2003, 08h14

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