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 :

récupérer la valeur d'un checkbutton


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2017
    Messages : 12
    Points : 2
    Points
    2
    Par défaut récupérer la valeur d'un checkbutton
    Bonjour,
    je travaille sur tkinter depuis peu et sur un mac avec la version python 3.6 et pyzo.
    J'ai fait un programme et je me suis rendue compte que je ne pouvais pas récupérer la valeur d'un checkbutton que je créé.
    J'ai regardé de nombreux forums, et je ne comprends toujours pas… D'autant plus que ce programme fonctionne sur un autre ordinateur (je travaille en trinôme). Le problème est que quand je clique sur le checkbutton, la valeur enregistrée est 0 et non 1.
    Merci d'avance pour votre aide et voici mon programme :

    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
    from tkinter import*
     
    def suivant1():
        def suivant2():
            page3=Tk()
            page2.destroy()
        def massemolaire(C,O,H,N,Fe,Na,K,I,Cl,Ca):
            m=[C,O,H,N,Fe,Na,K,I,Cl,Ca]
            M=12*m[0]+16*m[1]+m[2]+m[3]*14+m[4]*55.8+m[5]*23+m[6]*39.1+m[7]*126.9+m[8]*35.5+m[9]*40.1
            return(M) 
        V=vmode1.get()
        if V==1:
            print('non')
        else:
            print('oui')
        c=int(sp1.get())
        o=int(sp2.get())
        h=int(sp3.get())
        n=int(sp4.get())
        fe=int(sp5.get())
        na=int(sp6.get())
        k=int(sp7.get())
        i=int(sp8.get())
        cl=int(sp9.get())
        ca=int(sp10.get())
        mm=massemolaire(c,o,h,n,fe,na,k,i,cl,ca)
        page1.destroy()
        page2=Tk()
        l2=Label(page2,text='Choisir le type de molecule')
        l2.pack()
        b1=Button(page2,text='acide fort',command=suivant2)
        b1.pack()
        b2=Button(page2,text='base forte',command=suivant2)
        b2.pack()
        b3=Button(page2,text='acide faible',command=suivant2)
        b3.pack()
        b4=Button(page2,text='base faible',command=suivant2)
        b4.pack()
        b5=Button(page2,text='ampholyte',command=suivant2)
        b5.pack()
        print(mm)
     
     
    page1=Tk()
    l0=Label(page1,text='METHODE RP',bg='blue')
    l0.grid(row=0,column=2)
    l1=Label(page1,text='Donner la composition de votre molecule')
    l1.grid(row=1,column=2)
    li1=Label(page1,text='nombre de carbone')
    li1.grid(row=2,column=1)
    li2=Label(page1,text='nombre d oxygene')
    li2.grid(row=3,column=1)
    li3=Label(page1,text='nombre d hydrogene')
    li3.grid(row=4,column=1)
    li4=Label(page1,text='nombre d azote')
    li4.grid(row=5,column=1)
    li5=Label(page1,text='nombre de fer')
    li5.grid(row=6,column=1)
    li6=Label(page1,text='nombre de sodium')
    li6.grid(row=7,column=1)
    li7=Label(page1,text='nombre de potassium')
    li7.grid(row=8,column=1)
    li8=Label(page1,text='nombre d iode')
    li8.grid(row=9,column=1)
    li9=Label(page1,text='nombre de chlore')
    li9.grid(row=10,column=1)
    li10=Label(page1,text='nombre de calcium')
    li10.grid(row=11,column=1)
    sp1=Spinbox(page1,from_=0, to=10)
    sp1.grid(row=2,column=3)
    sp2=Spinbox(page1,from_=0, to=30)
    sp2.grid(row=3,column=3)
    sp3=Spinbox(page1,from_=0, to=10)
    sp3.grid(row=4,column=3)
    sp4=Spinbox(page1,from_=0, to=10)
    sp4.grid(row=5,column=3)
    sp5=Spinbox(page1,from_=0, to=10)
    sp5.grid(row=6,column=3)
    sp6=Spinbox(page1,from_=0, to=10)
    sp6.grid(row=7,column=3)
    sp7=Spinbox(page1,from_=0, to=10)
    sp7.grid(row=8,column=3)
    sp8=Spinbox(page1,from_=0, to=10)
    sp8.grid(row=9,column=3)
    sp9=Spinbox(page1,from_=0, to=10)
    sp9.grid(row=10,column=3)
    sp10=Spinbox(page1,from_=0, to=10)
    sp10.grid(row=11,column=3)
    l2=Label(page1,text='mode d introduction de l espèce acido basique')
    l2.grid(row=14,column=2)
    bo=Button(page1,text='suivant',command=suivant1)
    bo.grid(row=16,column=2)
    vmode1=IntVar()
    vmode2=IntVar()
    vmode3=IntVar()
    mode1=Checkbutton(page1,variable=vmode1,text='ajout d un réactif solide')
    mode1.grid(row=15,column=1) 
    mode2=Checkbutton(page1,variable=vmode2,text='ajout d un réactif liquide')
    mode2.grid(row=15,column=2) 
    mode3=Checkbutton(page1,variable=vmode3,text='solution de concentration donnée')
    mode3.grid(row=15,column=3)
    c'est un peu long donc j'en ai fais un autre plus court qui ne marche pas non plus (même problème) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from tkinter import*
     
    def F1():
        print(vmode1.get())
     
    page1=Tk()
    vmode1=IntVar()
     
    mode1=Checkbutton(page1,variable=vmode1,text='ajout d un réactif solide',command=F1)
    mode1.grid(row=15,column=1)
    quand je clique j'obtiens 0….

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

    Le deuxième exemple fonctionne bien chez moi mais il faut peut être ajouter page1.mainloop() à la dernière ligne pour que ce soit le cas chez vous.

    Le premier code pourrait fonctionner... mais il faut maîtriser les conséquences de plusieurs appels Tk() dans un même programme. Comme vous débutez, il sera plus facile d'apprendre les différences entre Tk, Toplevel et Frame...
    et de s'appliquer à appeler une seule fois Tk() au démarrage et Toplevel si vous voulez créer d'autres fenêtres.

    Vous avez une liste de tutos. à consulter sans modération.

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

  3. #3
    Candidat au Club
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2017
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Merci votre réponse rapide
    J'ai testé avec mainloop, sans succès mais avec ce message qui apparaît dont je ne comprend pas la signification :
    Note: The GUI event loop is already running in the pyzo kernel. Be aware
    that the function to enter the main loop does not block.

    Cela a-t-il un lien avec ce que vous avez mentionné sur le fait de faire plusieurs appels Tk() ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Citation Envoyé par helixe12 Voir le message
    J'ai testé avec mainloop, sans succès mais avec ce message qui apparaît dont je ne comprend pas la signification :
    Note: The GUI event loop is already running in the pyzo kernel. Be aware
    that the function to enter the main loop does not block.
    Essayez de lancer ce code sans Pyzo (vous devez avoir un Python installé quelque part et la possibilité de lancer un script à la console). Si çà ne fonctionne toujours pas, il faut essayer de mettre à jour TCL/Tk tel que recommandé ici...
    note: Le Python qui vient avec Pyzo n'est peut être pas le même qui est accessible depuis la console de commande.

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

  5. #5
    Candidat au Club
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2017
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Essayez de lancer ce code sans Pyzo (vous devez avoir un Python installé quelque part et la possibilité de lancer un script à la console). Si çà ne fonctionne toujours pas, il faut essayer de mettre à jour TCL/Tk tel que recommandé ici...
    note: Le Python qui vient avec Pyzo n'est peut être pas le même qui est accessible depuis la console de commande.

    - W
    J'ai python 3.6 et impossible de lancer IDLE … Pourtant cela marchait avant que j'installe pyzo ( je ne trouvais pas IDLE facile à utiliser)
    J'ai téléchargé Tcl pour mac (celui qui était conseillé) et installé celui ci mais toujours le même problème …
    Je précise que bien que je possède python 3.6, le python que j'utilise avec pyzo est la version 3.5 de python (dans les configurations de la console les versions 3.5, 2.7 et 2.6 sont proposées mais pas la 3.6)

Discussions similaires

  1. DBGrid récupérer les valeurs de l'enregistrement courant
    Par bob_sapp dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/09/2014, 07h56
  2. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45
  3. Réponses: 2
    Dernier message: 03/06/2004, 08h32
  4. [Couleur] Récupérer les valeurs R,V,B et L,U,V ?
    Par M4v3rick dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/01/2004, 03h28
  5. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28

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