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 :

Calculateur de pH


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut Calculateur de pH
    Bonjour je me suis lancé dans un programme qui calculerait le pH. Je me heurte à un gros problème. J'aimerai, quand on clique sur un des radios bouton à gauche, permettre à l'utilisateur d'entrer des valeurs de concentrations et de pka et ensuite cliquer sur "Calcul de pH" qui ouvrirai une nouvelle fenêtre (ou la mettrai dans le mode interactif). J'ai créé la fonction (pol) associée aux quatres radio bouton. Pourriez-vous m'aider? Merci d'avance

    Voici le 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
    41
    42
    43
    44
    45
    46
    47
    48
    # -*- coding: cp1252 -*-
    # Prototype de l'interface de notre programme
     
    from math import *
    from Tkinter import *
    import sys # le programme marche sans mais c'était noté dans un tuto? oO
     
    def pol(ca,pka):
        if myvar==1:
            r3=0.5*pka-0.5*log10(ca)
        elif myvar==2:
            r3=7+0.5*pka+0.5*log10(ca)
        elif myvar==4:
            r3=-log10(ca)
        elif myvar==5:
            r3=14+log10(ca)
        print(r3)
     
    fen1 = Tk()
    fen1.title("Calcul de pH")
    myvar= IntVar() # on cree une variable pour la valeur liee a la case cochee
     
    # création de widgets 'Radiobutton':
    r1=Radiobutton(fen1,text="Acide faible",variable=myvar,value=1, indicatoron=0).grid(row=1, column=1, sticky=W)
    r2=Radiobutton(fen1,text=" Base faible ",variable=myvar,value=2, indicatoron=0).grid(row=2, column=1, sticky=W)
    r4=Radiobutton(fen1,text="Acide fort",variable=myvar,value=4, indicatoron=0).grid(row=1, column=2, sticky=W)
    r5=Radiobutton(fen1,text="Base forte",variable=myvar, value=5, indicatoron=0).grid(row=2, column=2, sticky=W)
     
    # création de widget 'entry' et 'label':
    lfirst=Label(fen1, text="Quel est le type de l'éspèce considérée?").grid(row=0, column=1)
     
    l0=Label(fen1, text="Concentration de l'éspèce en question (en mol/l) :").grid(row=0, column=3, padx=20)
    e0=Entry(fen1).grid(row=1, column=3, sticky=N)
    l1=Label(fen1, text="pka?").grid(row=2, column=3, sticky=N)
    e1=Entry(fen1).grid(row=3, column=3, sticky=N)
     
    # création d'un widget 'Canvas' contenant une image bitmap :
    #can1 = Canvas(fen1, width =370, height =300, bg ='white')
    #photo = PhotoImage(file ='phscale.gif')
    #item = can1.create_image(185, 150, image =photo)
    #can1.grid(row=5, columnspan=5, padx=10, pady=10)
     
    #b1 = Button(fen1,text="Calcul du pH", command=fen1.pol(e).grid(row=3, column=3, pady=50)
    b1 = Button(fen1,text="Calcul du pH", command=pol).grid(row=3, column=3, pady=50)
     
     
    # démarrage :
    fen1.mainloop()

  2. #2
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    tu ne peux pas récupérer les données de tes deux Entries car tu n'as créé aucun lien vers elles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e0=Entry(fen1).grid(row=1, column=3, sticky=N)
    Sur cette ligne, e0 est le résultat de la fonction grid()! Si tu veux créer un lien sur e0, il faut faire
    Après tu peux utiliser ce lien pour faire utiliser ses méthodes, dont le grid() et le get()

    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
    # -*- coding: cp1252 -*-
    # Prototype de l'interface de notre programme
     
    from math import *
    from Tkinter import *
    import sys # le programme marche sans mais c'était noté dans un tuto? oO
     
    def pol(par1, par2):
        ca = float(par1.get())
        pka = float(par2.get())
        print ca, pka
     
    fen1 = Tk()
    fen1.title("Calcul de pH")
    myvar= IntVar() # on cree une variable pour la valeur liee a la case cochee
     
    # création de widgets 'Radiobutton':
    r1=Radiobutton(fen1,text="Acide faible",variable=myvar,value=1, indicatoron=0).grid(row=1, column=1, sticky=W)
    r2=Radiobutton(fen1,text=" Base faible ",variable=myvar,value=2, indicatoron=0).grid(row=2, column=1, sticky=W)
    r4=Radiobutton(fen1,text="Acide fort",variable=myvar,value=4, indicatoron=0).grid(row=1, column=2, sticky=W)
    r5=Radiobutton(fen1,text="Base forte",variable=myvar, value=5, indicatoron=0).grid(row=2, column=2, sticky=W)
     
    # création de widget 'entry' et 'label':
    lfirst=Label(fen1, text="Quel est le type de l'éspèce considérée?").grid(row=0, column=1)
     
    l0=Label(fen1, text="Concentration de l'éspèce en question (en mol/l) :").grid(row=0, column=3, padx=20)
    e0=Entry(fen1)
    e0.grid(row=1, column=3, sticky=N)
    l1=Label(fen1, text="pka?").grid(row=2, column=3, sticky=N)
    e1=Entry(fen1)
    e1.grid(row=3, column=3, sticky=N)
     
    # création d'un widget 'Canvas' contenant une image bitmap :
    #can1 = Canvas(fen1, width =370, height =300, bg ='white')
    #photo = PhotoImage(file ='phscale.gif')
    #item = can1.create_image(185, 150, image =photo)
    #can1.grid(row=5, columnspan=5, padx=10, pady=10)
     
    #b1 = Button(fen1,text="Calcul du pH", command=fen1.pol(e).grid(row=3, column=3, pady=50)
    b1 = Button(fen1,text="Calcul du pH", command=lambda par1=e0, par2=e1:pol(par1,par2)).grid(row=3, column=3, pady=50)
     
     
    # démarrage :
    fen1.mainloop()

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Merci c'est déjà un gros problème de résolu! Seulement je ne vois toujours pas comment faire un lien avec les radios boutons qui définissent chacun d'eux une équation qui pourra être résolues avec les valeurs que l'utilisateur rentrera dans les champs d'entrée :s Auriez-vous une idée?
    Merci beaucoup pour votre aide!
    J'avais défini les fonctions suivantes pour les différents radios boutons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def pol(ca,pka):
        if myvar==1:
            r3=0.5*pka-0.5*log10(ca)
        elif myvar==2:
            r3=7+0.5*pka+0.5*log10(ca)
        elif myvar==4:
            r3=-log10(ca)
        elif myvar==5:
            r3=14+log10(ca)
        print(r3)

  4. #4
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Citation Envoyé par tonystark Voir le message
    Seulement je ne vois toujours pas comment faire un lien avec les radios boutons qui définissent chacun d'eux une équation qui pourra être résolues avec les valeurs que l'utilisateur rentrera dans les champs d'entrée :s Auriez-vous une idée?
    Celle là, tu aurais pu chercher un petit peu, vu que t'avais quasiment donné la solution! Quelque soit le radio bouton que tu cliques, sa valeur se retrouve dans myvar.

    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
    # -*- coding: cp1252 -*-
    # Prototype de l'interface de notre programme
     
    from math import *
    from Tkinter import *
    import sys # le programme marche sans mais c'était noté dans un tuto? oO
     
    def pol(par1, par2, par3):
        ca = float(par1.get())
        pka = float(par2.get())
        equation_index = par3.get()
        print ca, pka, equation_index
     
    fen1 = Tk()
    fen1.title("Calcul de pH")
    myvar= IntVar(value=1) # on cree une variable pour la valeur liee a la case cochee
     
    # création de widgets 'Radiobutton':
    r1=Radiobutton(fen1,text="Acide faible",variable=myvar,value=1, indicatoron=0)
    r1.grid(row=1, column=1, sticky=W)
    r2=Radiobutton(fen1,text=" Base faible ",variable=myvar,value=2, indicatoron=0)
    r2.grid(row=2, column=1, sticky=W)
    r4=Radiobutton(fen1,text="Acide fort",variable=myvar,value=4, indicatoron=0)
    r4.grid(row=1, column=2, sticky=W)
    r5=Radiobutton(fen1,text="Base forte",variable=myvar, value=5, indicatoron=0)
    r5.grid(row=2, column=2, sticky=W)
     
    # création de widget 'entry' et 'label':
    lfirst=Label(fen1, text="Quel est le type de l'éspèce considérée?").grid(row=0, column=1)
     
    l0=Label(fen1, text="Concentration de l'éspèce en question (en mol/l) :").grid(row=0, column=3, padx=20)
    e0=Entry(fen1)
    e0.grid(row=1, column=3, sticky=N)
    l1=Label(fen1, text="pka?").grid(row=2, column=3, sticky=N)
    e1=Entry(fen1)
    e1.grid(row=3, column=3, sticky=N)
     
    # création d'un widget 'Canvas' contenant une image bitmap :
    #can1 = Canvas(fen1, width =370, height =300, bg ='white')
    #photo = PhotoImage(file ='phscale.gif')
    #item = can1.create_image(185, 150, image =photo)
    #can1.grid(row=5, columnspan=5, padx=10, pady=10)
     
    #b1 = Button(fen1,text="Calcul du pH", command=fen1.pol(e).grid(row=3, column=3, pady=50)
    b1 = Button(fen1,text="Calcul du pH", command=lambda par1=e0, par2=e1, par3=myvar:pol(par1,par2, par3)).grid(row=3, column=3, pady=50)
     
    # démarrage :
    fen1.mainloop()

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    J'ai tenté avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r1=Radiobutton(fen1,text="Acide faible",variable=myvar,value=(0.5*pka-0.5log10(ca)), indicatoron=0)
    Ca me met un message d'erreur, si je comprends bien, myvar possède une valeur fixe et il est impossible de faire varier sa valeur? C'est peut-être évident pour vous, mais je ne vois vraiment pas

    Merci de votre patience en tout ca!

  6. #6
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    je t'ai donné la réponse dans mon dernier post. Tout est dans la fonction pol, la valeur de tes radiobuttons est dans equation_index.

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

Discussions similaires

  1. Calculateur de chaine de caractères avec un séparateur
    Par NapsterVB dans le forum Langage
    Réponses: 25
    Dernier message: 07/03/2008, 12h38
  2. Réponses: 2
    Dernier message: 19/12/2007, 23h24
  3. Calculateur de date
    Par Mario Rousson dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/10/2006, 12h38
  4. [PHP-JS] Calculateur de pourcent en PHP
    Par tilou dans le forum Langage
    Réponses: 3
    Dernier message: 27/07/2006, 09h29

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