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 d'utilisation de liste déroulante !


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Problème d'utilisation de liste déroulante !
    Bon, je fatigue !!!

    Alors, je ne sais pas faire une chose. Enfin, quand vous allez voir mon code, vous allez vous dire que c'est quoi ce boxon ???

    Enfin bref, ma question :

    Comment faire pour pour que quand je rentre une valeur via ma liste déroulante listed1 (bloc de la ligne 7 à 19), je puisse enclencher la command bcp1 (ligne76)???

    Je suis la dessus depuis pas mal de temps et je vais aller dormir en espérant voir une solution demain matin avec mon bol de thé !!!

    Please !!! Et merci d'avance !!!

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    import tkinter.tix
    from tkinter import *
    import sys
     
    ##Liste deroulante de chaque division
    def dd1(*args):
    	text1=Label(accueil,text="Selectionez votre equipe :").grid(row=6,column=0,columnspan=3)
    	varlisted1 = tkinter.tix.StringVar()
    	listed1 = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1, variable=varlisted1)
    	listed1.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    	listed1.insert(0, "ACB 1")
    	listed1.insert(1, "BCP 1")
    	listed1.insert(2, "GF 1")
    	listed1.insert(3, "NBC 2")
    	listed1.insert(4, "RCP 1")
    	listed1.insert(5, "SC USMG 1")
    	listed1.insert(6, "TACB 1")
    	listed1.insert(7, "TACB 2")
    	listed1.grid(row=6,column=3,columnspan=4)
     
    def dd2(*args):
    	text1=Label(accueil,text="Selectionez votre equipe :").grid(row=6,column=0,columnspan=3)
    	varlisted2 = tkinter.tix.StringVar() 
    	listed2 = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1, variable=varlisted2)
    	listed2.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    	listed2.insert(0, "ABAD 1")
    	listed2.insert(1, "ACB 2")
    	listed2.insert(2, "BCP 2")
    	listed2.insert(3, "CBAB 6")
    	listed2.insert(4, "GF 2")
    	listed2.insert(5, "NBC 3")
    	listed2.insert(6, "SC USMG 2")
    	listed2.insert(7, "SNB 3")
    	listed2.grid(row=6,column=3,columnspan=4)
     
    def dd3(*args):
    	text1=Label(accueil,text="Selectionez votre equipe :").grid(row=6,column=0,columnspan=3)
    	varlisted3 = tkinter.tix.StringVar() 
    	listed3 = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1, variable=varlisted3)
    	listed3.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    	listed3.insert(0, "APACHE 1")
    	listed3.insert(1, "BBC 1")
    	listed3.insert(2, "CBAB 7")
    	listed3.insert(3, "CSLGR 1")
    	listed3.insert(4, "EBNP 1")
    	listed3.insert(5, "RSCM 2")
    	listed3.insert(6, "VBCE 1")
    	listed3.grid(row=6,column=3,columnspan=4)
     
    def ddMa(*args):
    	text1=Label(accueil,text="Selectionez votre equipe :").grid(row=6,column=0,columnspan=3)
    	varlistedma = tkinter.tix.StringVar() 
    	listedma = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1, variable=varlistedma)
    	listedma.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    	listedma.insert(0, "ABAD 2")
    	listedma.insert(1, "CBAB 8")
    	listedma.insert(2, "GF 3")
    	listedma.insert(3, "NBC 4")
    	listedma.insert(4, "RCP 2")
    	listedma.insert(5, "VBCE 2")
    	listedma.grid(row=6,column=3,columnspan=4)
     
    def ddMb(*args):
    	text1=Label(accueil,text="Selectionez votre equipe :").grid(row=6,column=0,columnspan=3)
    	varlistedmb = tkinter.tix.StringVar() 
    	listedmb = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1, variable=varlistedmb)
    	listedmb.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    	listedmb.insert(0, "ACB 3")
    	listedmb.insert(1, "RSCM 3")
    	listedmb.insert(2, "SC USMG 3")
    	listedmb.insert(3, "SNB 4")
    	listedmb.insert(4, "TACB 3")
    	listedmb.grid(row=6,column=3,columnspan=4)
     
    ##Liste deroulante de chaque club
    def bcp1(*args):
    	text2=Label(accueil,text="Selectionez la rencontre :").grid(row=7,column=0,columnspan=3)
    	varj_bcp1 = tkinter.tix.StringVar()
    	j_bcp1 = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1, variable=varj_bcp1)
    	j_bcp1.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    	j_bcp1.insert(0, "J1 11/11/11 Gagny 1 vs BCP 1")
    	j_bcp1.insert(1, "BCP 1")
    	j_bcp1.insert(2, "GF 1")
    	j_bcp1.insert(3, "NBC 2")
    	j_bcp1.insert(4, "RCP 1")
    	j_bcp1.insert(5, "SC USMG 1")
    	j_bcp1.insert(6, "TACB 1")
    	j_bcp1.insert(7, "TACB 2")
    	j_bcp1.grid(row=7,column=3,columnspan=4)
     
    ##Creation de la fenetre
    accueil = tkinter.tix.Tk()
    accueil.title("BadSoft IC 0.01")
     
    ##Creation Texte haut de page
    tit1=Label(accueil,text="Championnat Interclubs").grid(row=0,column=0,columnspan=9)
    tit2=Label(accueil,text="Departemental 93").grid(row=1,column=0,columnspan=9)
    tit3=Label(accueil,text="2011/2012").grid(row=2,column=0,columnspan=9)
     
    ##Texte Division
    div1=Label(accueil,text="Division 1").grid(row=4,column=0)
    tiret1=Label(accueil,text="-").grid(row=4,column=1)
    div2=Label(accueil,text="Division 2").grid(row=4,column=2)
    tiret2=Label(accueil,text="-").grid(row=4,column=3)
    div3=Label(accueil,text="Division 3").grid(row=4,column=4)
    tiret3=Label(accueil,text="-").grid(row=4,column=5)
    divMa=Label(accueil,text="Masculine A").grid(row=4,column=6)
    tiret4=Label(accueil,text="-").grid(row=4,column=7)
    divMb=Label(accueil,text="Masculine B").grid(row=4,column=8)
     
    #Bouton Division
    v = StringVar()
    Radiobutton(accueil,variable=v,value="1",command=dd1).grid(row=5,column=0)
    Radiobutton(accueil,variable=v,value="2",command=dd2).grid(row=5,column=2)
    Radiobutton(accueil,variable=v,value="3",command=dd3).grid(row=5,column=4)
    Radiobutton(accueil,variable=v,value="mA",command=ddMa).grid(row=5,column=6)
    Radiobutton(accueil,variable=v,value="mB",command=ddMb).grid(row=5,column=8)
    radio_fantome=Radiobutton(accueil,variable=v,value="mC")		##Boutton Fantome
    radio_fantome.select()		##Selection auto fantome
     
    ##Vide Fenetre
    vide1=Label(accueil,text="").grid(row=3,column=0)
    vide3=Label(accueil,text="").grid(row=8,column=0)
     
    ##Termine le programme
    accueil.mainloop()

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour et bon petit dej,

    Un début de réponse (aucune envie de refaire le code ce matin)
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    import tkinter.tix
    from tkinter import *
    import sys
     
    dd1 = ("ACB 1", "BCP 1", "GF 1", "NBC 2", "RCP 1", "SC USMG 1", "TACB 1", "TACB 2")
    dd2 = ("ABAD 1", "ACB 2", "BCP 2", "CBAB 6", "GF 2", "NBC 3", "SC USMG 2", "SNB 3")
    dd3 = ("APACHE 1", "BBC 1", "CBAB 7", "CSLGR 1", "EBNP 1", "RSCM 2", "VBCE 1")
    ddMa = ("ABAD 2", "CBAB 8", "GF 3", "NBC 4", "RCP 2", "VBCE 2")
    ddMb = ("ACB 3", "RSCM 3", "SC USMG 3", "SNB 4", "TACB 3")
     
    def listdiv(division):
        Label(accueil,text="Selectionez votre equipe :").grid(row=6, column=0, columnspan=3)
        listed = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1, command=bcp) # <<<<<< COMMAND=
        listed.entry.config(state='readonly')  ## met la zone de texte en lecture seule
        for index, elem in enumerate(division):
            listed.insert(index, elem)
        listed.grid(row=6, column=3, columnspan=4)
     
    def bcp(selection):
        print("ICI: {}".format(selection)) # <<<<<<<<<<<<<<<<<<<<<<<<<<< ICI
        Label(accueil,text="Selectionez la rencontre :").grid(row=7, column=0, columnspan=3)
        j_bcp1 = tkinter.tix.ComboBox(accueil, editable=1, dropdown=1)
        j_bcp1.entry.config(state='readonly')  ## met la zone de texte en lecture seule
        j_bcp1.insert(0, "J1 11/11/11 Gagny 1 vs BCP 1")
        j_bcp1.insert(1, "BCP 1")
        j_bcp1.insert(2, "GF 1")
        j_bcp1.insert(3, "NBC 2")
        j_bcp1.insert(4, "RCP 1")
        j_bcp1.insert(5, "SC USMG 1")
        j_bcp1.insert(6, "TACB 1")
        j_bcp1.insert(7, "TACB 2")
        j_bcp1.grid(row=7, column=3, columnspan=4)
     
    ##Creation de la fenetre
    accueil = tkinter.tix.Tk()
    accueil.title("BadSoft IC 0.01")
     
    ##Creation Texte haut de page
    Label(accueil, text="Championnat Interclubs").grid(row=0, column=0, columnspan=9)
    Label(accueil, text="Departemental 93").grid(row=1, column=0, columnspan=9)
    Label(accueil, text="2011/2012").grid(row=2, column=0, columnspan=9)
     
    ##Texte Division
    Label(accueil, text="Division 1").grid(row=4, column=0)
    Label(accueil, text="-").grid(row=4, column=1)
    Label(accueil, text="Division 2").grid(row=4, column=2)
    Label(accueil, text="-").grid(row=4, column=3)
    Label(accueil, text="Division 3").grid(row=4, column=4)
    Label(accueil, text="-").grid(row=4, column=5)
    Label(accueil, text="Masculine A").grid(row=4, column=6)
    Label(accueil, text="-").grid(row=4, column=7)
    Label(accueil, text="Masculine B").grid(row=4, column=8)
     
    #Bouton Division
    v = StringVar()
    Radiobutton(accueil, variable=v, value="1", command=lambda: (listdiv(dd1))).grid(row=5, column=0)
    Radiobutton(accueil, variable=v, value="2", command=lambda: (listdiv(dd2))).grid(row=5, column=2)
    Radiobutton(accueil, variable=v, value="3", command=lambda: (listdiv(dd3))).grid(row=5, column=4)
    Radiobutton(accueil, variable=v, value="mA", command=lambda: (listdiv(ddMa))).grid(row=5, column=6)
    Radiobutton(accueil, variable=v, value="mB", command=lambda: (listdiv(ddMb))).grid(row=5, column=8)
    radio_fantome=Radiobutton(accueil,variable=v,value="mC")        ##Boutton Fantome
    radio_fantome.select()        ##Selection auto fantome
     
    ##Vide Fenetre
    vide1=Label(accueil, text="").grid(row=3, column=0)
    vide3=Label(accueil, text="").grid(row=8, column=0)
     
    ##Termine le programme
    accueil.mainloop()
    A vous de le finir

    @+

    Edit:

    Note: J'ai mis enumerate pour suivre la logique du code donné mais je présume que tix (que je n'utilise pas) supporte le END tk.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bien bien bien !

    Le code est beaucoup mieux comme ça !

    Maintenant, essayons de faire ce que je veux faire avec les 2 indications que tu m'as laissé !!!

    La suite après ma longue réflexion !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Grande question !!!

    A quoi sert lambda ???

    Il me faudrait une traduction précise de ce que fait ce petit mot pour bien comprendre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Radiobutton(accueil, variable=v, value="1", command=lambda: (listdiv(dd1))).grid(row=5, column=0)
    Merci !

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    command exécute la fonction qui lui est donnée lors de l'interprétation (on vas dire lecture par l'interpréteur) du code.
    Donc si j’écris command=unefonction(desparamettres) cela est exécuter par Python à la lecture du code.
    Pour que la fonction ne soit exécutée 'que' lors de l'exécution on lui passe une fonction lambda ce qui fait que lors de la 'lecture du code' command=unefonctionlambda et que lors de l’exécution celle ci est utilisée ( () ).
    Les fonctions lambda sont fabuleuses, et incontournables, pour command donc n'hésitez pas a faire une recherche dans le sous forum Tkinter pour en voir toutes les possibilités.

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Petite rectification quand même:
    C'est lambda: listdiv(dd1) et non lambda: (listdiv(dd1))

    Un petit exemple pour comprendre cette histoire d'interprétation/exécution du 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
    39
    40
    try:
        import tkinter as Tk
    except:
        import Tkinter as Tk
     
    def cb(mavar):
        print(mavar)
        lab.config(text=str(mavar))
     
    root = Tk.Tk()
    root.title("using lambda with command")
     
    # Juste pour afficher le titre au complet...
    w_geo = {'padx':10, 'pady':5, 'ipadx':5, 'ipady':5}
     
    lab = Tk.Label(root, bg='white')
    lab.grid(row=0, column=0, columnspan=3, sticky=Tk.W+Tk.E+Tk.N+Tk.S)
     
    # Ici command = le return de la fonction cb(v1), soit None.
    v1 = 1
    while v1 < 5 :
        Tk.Button(root, text="Valeur: "+str(v1), command=cb(v1)).grid(w_geo, row=v1, column=0)
        v1 += 1
     
    # Ici lorsque command est execute il retourne la derniere valeur de v2, soit 5.
    v2 = 1
    while v2 < 5 :
        Tk.Button(root, text="Valeur "+str(v2), command=lambda :cb(v2)).grid(w_geo, row=v2, column=1)
        v2 += 1
     
    # Ici v=v3 stocke la valeur de v3 lors de la creation du Widget.
    # Attention : J'ai bien mis v=v3 et cb(v) pour que la valeur de v3
    # lors de l'interpretation du code soit donné en argument a lambda.
    # Surtout pas cb(v3) qui reviens au code ci dessu.
    v3 = 1
    while v3 < 5 :
        Tk.Button(root, text="Valeur "+str(v3), command=lambda v=v3:cb(v)).grid(w_geo, row=v3, column=2)
        v3 += 1
     
    root.mainloop()

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bon, j'avance petit à petit !

    Je comprend du coup que le code m'envoie la commande bcp quoi qu'il arrive !

    Sauf que je souhaite qu'en fonction de ce qui a été sélectionné dans le premier menu déroulant, le menu déroulant en dessous me fournissent une liste bien précise.

    Comment faire ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Pas de solution ?

    Snif snif !!!

    Je suis bloqué pour cette première page rien qu'à cause de ça ...

    Snif snif !!!

Discussions similaires

  1. Problème avec zone de liste déroulante
    Par lawachekyry dans le forum IHM
    Réponses: 1
    Dernier message: 05/11/2007, 09h42
  2. Problème pour afficher une liste déroulante
    Par Oli_Ifre dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2007, 09h11
  3. [Débutant] Problème de récupération de liste déroulante
    Par kaelem dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 07/01/2007, 18h35
  4. Problème avec zone de liste déroulante
    Par jerem78 dans le forum Access
    Réponses: 4
    Dernier message: 07/06/2006, 16h58
  5. Problème pour positionner une liste déroulante
    Par ouckileou dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/09/2004, 01h05

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