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 :

Problème avec OptionMenu défini à partir d'un autre OptionMenu [Python 2.X]


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 129
    Points : 40
    Points
    40
    Par défaut Problème avec OptionMenu défini à partir d'un autre OptionMenu
    Bonjour,
    j'ai réussi à définir la liste d'un OptionMenu o1 depuis un OptionMenu o, à partir d'un exemple trouvé sur le web. Mon problème est isolé dans l'exemple ci-dessous :

    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
    # changer les listes d'un OptionMenu depuis un autre OptionMenu
    from Tkinter import *
     
    values = ["one","two","three"]
     
     
    def change(x):
     global o1, var1
     # change options
     print o['menu'].index(var.get())
     m = o1.children['menu']
     m.delete(0,END)
     newvalues = "a b c d e f".split()
     for val in newvalues:
         m.add_command(label=val, command=lambda v=var1, l=val:v.set(l))
     var1.set(newvalues[0])
     
    def change1(x):
     print "passe"
     return
     
    root = Tk()
    var = StringVar()
    var.set(values[0])
    var1 = StringVar()
    var1.set(values[0])
    # set initial options
    o = OptionMenu(root,var,*values, command=change)
    o.pack()
    o1 = OptionMenu(root,var1,*values, command=change1)
    o1.pack()
    root.mainloop()
    Quand je clique sur un des éléments de la liste de o, je change la liste disponible sous o1.
    Mais quand je clique sur un des éléments de la nouvelle liste de o1, je ne passe pas dans le sous-programme change1().

    Par contre, si au lancement du programme, je clique d'emblée sur un des éléments de o1, sans toucher à o, je passe bien dans change1().

    Je voudrais bien entendu passer dans change1() dans le premier scénario aussi.

    Merci pour votre aide.

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

    çà devrait fonctionner tant que vous ne modifiez pas le 2ème menu avec les "m.add_command". Car vous écrasez les commandes construites lors de la créations de l'OptionMenu sans mettre en place le callback. Et... la façon utilisée par OptionMenu pour faire çà est assez "compliquée" (voir les sources).
    Donc çà ne marche pas.
    Après la question est de savoir ce que vous voulez faire pour voir s'il n'y a pas des widgets un peu plus adaptés.

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

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 129
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup pour cette réponse rapide.
    En fait je voulais récupérer l'index du choix dans o1.
    Je vais donc voir un autre type de solution.
    Bonne nuit

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

Discussions similaires

  1. problème avec un tri de tableau et autre
    Par chupinours dans le forum Langage
    Réponses: 7
    Dernier message: 30/10/2012, 00h23
  2. [XL-2007] Problème avec un CommandBoutton pour atteindre une autre page
    Par bapt298 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/06/2012, 09h36
  3. Réponses: 3
    Dernier message: 31/05/2012, 17h24
  4. Réponses: 9
    Dernier message: 25/10/2007, 16h20
  5. Réponses: 6
    Dernier message: 24/06/2007, 21h11

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