Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul ne s'incrémente pas

Sujet résolu
    5 septembre 2022 à 11:30:34

    Bonjour à toutes et tous et bon courage pour ceux qui ne sont malheureusement plus en vacance !

    Alors j'ai un problème. en ce moment je fais des tests pour un futur programme et je vous donnerai le code ci-dessous.

    Mon problème est le suivant. Je mets une valeur (par exemple 10) dans le second entry box. Quand je tape sur test, la valeur s'affiche dans la console. Mais quand je tape une second fois sur test en laissant la valeur, la console affiche toujours 10. Pourtant j'ai fait une fonction pour que le deux valeurs s'additionnent mais elle semble avoir un erreur. Pourriez-vous m'aider ?

    import tkinter
    from tkinter import IntVar
    
    root = tkinter.Tk()
    root.geometry('500x500')
    
    
    def test():
        r = frame_1.grid_size()[1] + 1
        text = tkinter.Label(frame_1, text="22/12/2006")
        text.grid(row=r, column=0)
        if number.get() == 1:
            text_1 = tkinter.Label(frame_1, text=float(entry_test1.get()))
            text_1.grid(row=r, column=1)
        elif number.get() == 2:
            text_2 = tkinter.Label(frame_1, text=float(entry_test.get()))
            text_2.grid(row=r, column=2)
        somme = float(entry_test1.get())
        somme1 = somme + float(entry_test1.get())
    
        print(somme)
    
    
    button = tkinter.Button(root, text="test !", command=test)
    button.pack(pady=5)
    
    number = IntVar()
    number.set(1)
    button_credit = tkinter.Radiobutton(root, text='Crédit', variable=number, value=1)
    button_debit = tkinter.Radiobutton(root, text='Débit', variable=number, value=2)
    
    button_credit.pack()
    button_debit.pack()
    
    entry_test = tkinter.Entry(root)
    entry_test.pack(pady=10)
    entry_test1 = tkinter.Entry(root)
    entry_test1.pack(pady=10)
    
    table = tkinter.Listbox(root, height=100)
    table.pack()
    
    frame_1 = tkinter.Frame(table, width=78)
    frame_1.pack()
    
    label = tkinter.Label(frame_1, text='Date')
    label.grid(row=0, column=0, padx=10, pady=5)
    
    label_2 = tkinter.Label(frame_1, text='Débit')
    label_2.grid(row=0, column=1, padx=100, pady=5)
    
    label_2 = tkinter.Label(frame_1, text='Crédit')
    label_2.grid(row=0, column=2, padx=100, pady=5)
    
    root.mainloop()
    



    • Partager sur Facebook
    • Partager sur Twitter
      5 septembre 2022 à 11:37:30

      mathias13 a écrit:

      Mais quand je tape une second fois sur test en laissant la valeur, la console affiche toujours 10. Pourtant j'ai fait une fonction pour que le deux valeurs s'additionnent mais elle semble avoir un erreur. Pourriez-vous m'aider ?

      Si vous ne changez rien, normal que ça affiche le même résultat... Après pour que les 2 valeurs s'additionnent, il faut écrire le code qui le fait (ou le corriger si ça ne le fait pas) et quand on lit là ou ça se passe:

          somme = float(entry_test1.get())
          somme1 = somme + float(entry_test1.get())
       
          print(somme)

      ça devrait vous aauter aux yeux...

      • Partager sur Facebook
      • Partager sur Twitter
        5 septembre 2022 à 12:05:35

        A pat le print(somme) qui devrait être print(somme1), je ne vois vraiment pas où est le problème. Et maintenant ça n'affiche pas 10 mais directement 20 et ça reste à 20...

        Je comprends qu'il y a une erreur, mais j'ignore comment faire pour que la variable s'incrémente de la valeur entrée la seconde fois...

        -
        Edité par mathias13 5 septembre 2022 à 12:47:26

        • Partager sur Facebook
        • Partager sur Twitter
          5 septembre 2022 à 14:33:16

          mathias13 a écrit:

          Je comprends qu'il y a une erreur, mais j'ignore comment faire pour que la variable s'incrémente de la valeur entrée la seconde fois...

          Si la valeur saisie dans entry_test1 reste à 10, 10+10 fera toujours 20. Il n'y a rien dans le code pour faire autre chose.

          Après ce que vous voulez doit être décrit en français histoire qu'on comprenne: "la valeur entrée la seconde fois" pourrait signifier entrer 5 et se retrouver à voir un 10. Incrémenter, pourrait vouloir dire ajouter la valeur d'entry_test1 a chaque clic sur le Button (ce qui revient à le multiplier par le nombre de clics).

          Si vous ne savez pas décrire plus précisément ce que vous voulez faire, pas facile de le coder et d' être compris dans un forum.



          -
          Edité par mps 5 septembre 2022 à 14:34:22

          • Partager sur Facebook
          • Partager sur Twitter
            5 septembre 2022 à 15:10:31

            Bon, je vais essayer d'être plus précis. Quand on lance le programme celui-ci demande à l'utilisateur un nombre pour un débit (pour le moment c'est la seule possibilité). Si on entre 10, par exemple, la valeur retournée dans le print est 10. Maintenant je veux que si on reclique sur le bouton Test avec une autre valeur, celle-ci soit ajoutée et que la valeur retournée par print soit cette fois 10 + la nouvelle valeur. En fait, je veux que les valeurs entrées par l'utilisateur s'additionnent entre elles.
            • Partager sur Facebook
            • Partager sur Twitter
              5 septembre 2022 à 15:28:23

              mathias13 a écrit:

              Maintenant je veux que si on reclique sur le bouton Test avec une autre valeur, celle-ci soit ajoutée et que la valeur retournée par print soit cette fois 10 + la nouvelle valeur. En fait, je veux que les valeurs entrées par l'utilisateur s'additionnent entre elles.

              Ca veut dire que somme est une variable globale initialisé à 0 à laquelle on ajoute la valeur récupérée dans entry_test1. Sachant que pour vous lancer à programmer avec tkinter, vous devriez savoir faire cela, qu'est ce qui vous bloque?

              • Partager sur Facebook
              • Partager sur Twitter
                6 septembre 2022 à 12:44:32



                -
                Edité par mathias13 6 septembre 2022 à 12:58:49

                • Partager sur Facebook
                • Partager sur Twitter
                  6 septembre 2022 à 12:58:59

                  somme2 = somme + somme1 

                  que vaut somme à ce moment ? a priori toujours 200.0, puisqu'on ne change pas la valeur de somme

                  que vaut somme1 à ce moment ? la valeur de entry_test1

                  donc vaut somme2, 200+ la valeur de l'entry_test1

                  Edit: ah, le temps que j'écrive, il a dû trouver ^^ 

                  -
                  Edité par umfred 6 septembre 2022 à 12:59:56

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Calcul ne s'incrémente pas

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  • Editeur
                  • Markdown