Récupérer et utiliser valeur Entry

Résolu

Bonjour, ce programme n'est pas terminé mais il donne un message d'erreur quand je le lance je n'arrive pas à utiliser les valeurs Entry est-ce que quelqu'un a une solution ?

from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import string

# Create an instance of tkinter frame
win= Tk()

# Set the size of the tkinter window
win.geometry("700x600")

frame = Frame(win, bg='white')

def total():
   nbr_report = int(nombre_reportage.get())
   prix_report = int(prix_reportage.get(frame))
   nbr_sup_image = int(nombre_supplément_image.get(frame))
   prix_sup_image = int(prix_supplément_image.get(frame))
   taxe = int(TVA.get(frame))
   inf = int(inflation.get(frame))
   p_deplacement = int(prix_deplacement.get(frame))
   reduc = int(reduction.get(frame))

   montant_brute= ((((nbr_report*prix_report)+(nbr_sup_image*prix_sup_image)+p_deplacement-reduc)*(inf))/100)
   montant_ttc = ((montant_brute* (taxe)/100))
   print(montant_brute)
   print(montant_ttc)

def button_click():
   pass


label_title = Label(frame,text="TVA en %",font=("Helvetica", 15),bg='white',fg='black')
label_title.pack()

TVA = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
TVA.pack()

label_subtitle = Label(frame,text="nombre reportage",font=("Helvetica", 15),bg='white',fg='black')
label_subtitle.pack()

nombre_reportage= Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
nombre_reportage.pack()

label_subtitle = Label(frame,text="Prix/reportage",font=("Helvetica", 15),bg='white',fg='black')
label_subtitle.pack()

prix_reportage = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
prix_reportage.pack()

label_subtitle = Label(frame,text="nombre suppléments image",font=("Helvetica", 15),bg='white',fg='black')
label_subtitle.pack()
nombre_supplément_image = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
nombre_supplément_image.pack()

label_subtitle = Label(frame,text="Prix/suppléments image",font=("Helvetica", 15),bg='white',fg='black')
label_subtitle.pack()
prix_supplément_image = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
prix_supplément_image.pack()

label_subtitle = Label(frame,text="inflation en %",font=("Helvetica", 15),bg='white',fg='black')
label_subtitle.pack()
inflation = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
inflation.pack()

label_subtitle = Label(frame,text="Coûts déplacements",font=("Helvetica", 15),bg='white',fg='black')
label_subtitle.pack()
prix_deplacement = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
prix_deplacement.pack()

label_subtitle = Label(frame,text="Réduction en €",font=("Helvetica", 15),bg='white',fg='black')
label_subtitle.pack()
reduction= Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
reduction.pack()


ttk.Button(win, text= "When you are finish click here", command=total()).pack(pady= 20, side=BOTTOM)


frame.pack(side =TOP)
win.mainloop()
total()

5 réponses

  1. Contributeur

    bonjour,

    en ligne 77, tu écris "command=total()".

    Si tu veux que la fonction total soit appelée quand le bouton est cliqué, il faut écrire "command=total".

    1
    1. merci  mais ça ne règle pas le problème de la récupération des Entry^^

      0
  2. Bonjour

    Pour déboguer par soi-même ou avec l'aide du forum

    1. Ne pas poster de messages en doublon
    2. Éviter d'avoir des avertissements partout dans le code, quand j'ai copié collé ton code, toutes les 3 ou 4 lignes, j'avais un panneau avec un message qui dit en gros, je ne connais pas tel mot clé, j'espère qu'il vient du import * plus haut, mais si ce n'est pas le cas ça va planter
    3. lire le message d'erreur, il t'indique quelle ligne est concernée, en général, il y a le n° de ligne et son code
    4. essayer d'analyser
      1. aller sur la ligne désigné par le message d'erreur
      2. tâcher de comprendre l'origine de l'erreur
      3. lire la documentation des objets / méthodes / fonctions etc.. utilisées sur cette ligne pour voir si on n'y trouve pas un début de solution
      4. chercher des exemples d'utilisation de ces objets / méthodes / fonctions
    5. si on n'y arrive pas, copier-coller le message d'erreur sur le forum avec la question et le code.
      1. Ça évite de recevoir une réponse sur un autre problème du code que celui qu'on cherche
      2. Ça peut suffire au lecteur pour répondre au moins partiellement, typiquement là, je t'aurais répondu, ça plante à la ligne 16, mais pas à la 15, quelle est la différence entre ces 2 lignes ?

    0
    1. from tkinter import *
      from tkinter import ttk
      
      
      # Create an instance of tkinter frame
      win = Tk()
      
      # Set the size of the tkinter window
      win.geometry("700x600")
      
      frame = Frame(win, bg='white')
      
      def total():
         nbr_report = int(nombre_reportage.get())
         prix_report = int(prix_reportage.get())
         nbr_sup_image = int(nombre_supplement_image.get())
         prix_sup_image = int(prix_supplement_image.get())
         taxe = int(TVA.get())
         inf = int(inflation.get())
         p_deplacement = int(prix_deplacement.get())
         reduc = int(reduction.get())
      
         montant_brute= ((((nbr_report*prix_report)+(nbr_sup_image*prix_sup_image)+p_deplacement-reduc)*(inf))/100)
         montant_ttc = ((montant_brute* (taxe)/100))
         print(montant_brute)
         print(montant_ttc)
      
      def button_click():
         pass
      
      
      label_title = Label(frame,text="TVA en %",font=("Helvetica", 15),bg='white',fg='black')
      label_title.pack()
      
      TVA = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      TVA.pack()
      
      label_subtitle = Label(frame,text="nombre reportage",font=("Helvetica", 15),bg='white',fg='black')
      label_subtitle.pack()
      
      nombre_reportage= Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      nombre_reportage.pack()
      
      label_subtitle = Label(frame,text="Prix/reportage",font=("Helvetica", 15),bg='white',fg='black')
      label_subtitle.pack()
      
      prix_reportage = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      prix_reportage.pack()
      
      label_subtitle = Label(frame,text="nombre suppléments image",font=("Helvetica", 15),bg='white',fg='black')
      label_subtitle.pack()
      nombre_supplement_image = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      nombre_supplement_image.pack()
      
      label_subtitle = Label(frame,text="Prix/suppléments image",font=("Helvetica", 15),bg='white',fg='black')
      label_subtitle.pack()
      prix_supplement_image = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      prix_supplement_image.pack()
      
      label_subtitle = Label(frame,text="inflation en %",font=("Helvetica", 15),bg='white',fg='black')
      label_subtitle.pack()
      inflation = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      inflation.pack()
      
      label_subtitle = Label(frame,text="Coûts déplacements",font=("Helvetica", 15),bg='white',fg='black')
      label_subtitle.pack()
      prix_deplacement = Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      prix_deplacement.pack()
      
      label_subtitle = Label(frame,text="Réduction en €",font=("Helvetica", 15),bg='white',fg='black')
      label_subtitle.pack()
      reduction= Entry(frame,font=("Helvetica", 20),bg='white',fg='black',bd=1 )
      reduction.pack()
      
      
      ttk.Button(win, text= "When you are finish click here", command=total).pack(pady= 20, side=BOTTOM)
      
      
      frame.pack(side =TOP)
      win.mainloop()
      total()

      voici le code avec moins d'erreurs

      0
    2. @user_3022

      voici le code erreur :

      Traceback (most recent call last):
        File "/Users/kalixarekos/PycharmProjects/Devis/main.py", line 81, in <module>
          total()
        File "/Users/kalixarekos/PycharmProjects/Devis/main.py", line 14, in total
          nbr_report = int(nombre_reportage.get())
        File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 3043, in get
          return self.tk.call(self._w, 'get')
      _tkinter.TclError: invalid command name ".!frame.!entry2"

      0
  3. Avec ton nouveau code, je n'ai pas de message d'erreur, j'ai bien 2 résultats affichés (faux à mon avis, mais c'est un autre problème).

    Par contre, il y a toujours autant d'avertissements


    0
    1. from tkinter import *
      from tkinter import ttk
      
      
      # Create an instance of tkinter frame
      win = Tk()
      
      # Set the size of the tkinter window
      win.geometry("700x600")
      
      frame = Frame(win, bg='white')
      
      def total():
          nbr_report = int(nombre_reportage.get())
          prix_report = int(prix_reportage.get())
          nbr_sup_image = int(nombre_supplement_image.get())
          prix_sup_image = int(prix_supplement_image.get())
          taxe = int(TVA.get())
          inf = int(inflation.get())
          p_deplacement = int(prix_deplacement.get())
          reduc = int(reduction.get())
      
          montant_brute = ((((nbr_report*prix_report)+(nbr_sup_image*prix_sup_image)+p_deplacement-reduc)*inf)/100)
          montant_ttc = ((montant_brute * taxe)/100)
          print(montant_brute)
          print(montant_ttc)
      
      def button_click():
          pass
      
      
      label_title = Label(frame, text="TVA en %", font=("Helvetica", 15), bg='white', fg='black')
      label_title.pack()
      
      TVA = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      TVA.pack()
      
      label_subtitle = Label(frame, text="nombre reportage", font=("Helvetica", 15), bg='white', fg='black')
      label_subtitle.pack()
      
      nombre_reportage = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      nombre_reportage.pack()
      
      label_subtitle = Label(frame, text="Prix/reportage", font=("Helvetica", 15), bg='white', fg='black')
      label_subtitle.pack()
      
      prix_reportage = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      prix_reportage.pack()
      
      label_subtitle = Label(frame, text="nombre suppléments image", font=("Helvetica", 15), bg='white', fg='black')
      label_subtitle.pack()
      nombre_supplement_image = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      nombre_supplement_image.pack()
      
      label_subtitle = Label(frame, text="Prix/suppléments image", font=("Helvetica", 15), bg='white', fg='black')
      label_subtitle.pack()
      prix_supplement_image = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      prix_supplement_image.pack()
      
      label_subtitle = Label(frame, text="inflation en %", font=("Helvetica", 15), bg='white', fg='black')
      label_subtitle.pack()
      inflation = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      inflation.pack()
      
      label_subtitle = Label(frame, text="Coûts déplacements", font=("Helvetica", 15), bg='white', fg='black')
      label_subtitle.pack()
      prix_deplacement = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      prix_deplacement.pack()
      
      label_subtitle = Label(frame, text="Réduction en €", font=("Helvetica", 15), bg='white', fg='black')
      label_subtitle.pack()
      reduction = Entry(frame, font=("Helvetica", 20), bg='white', fg='black', bd=1)
      reduction.pack()
      
      
      ttk.Button(win, text="When you are finish click here", command=total).pack(pady=20, side=BOTTOM)
      
      
      frame.pack(side=TOP)
      win.mainloop()
      total()

      j'arrive pas à corriger les 2 derniers une idée ?

      0
    2. Contributeur
      @user_3022

      Quels deux derniers?

      0
    3. Contributeur
      @user_3022

      Qu'essaies-tu de réaliser?
      Pourquoi ce code en ligne 81?

      1
    4. @yg_be

      Whismeril  m'embête avec les messages d'avertissements

      0
  4. c'est bon le problème est réglé

    0
    1. Désolé de t'embêter à essayer de te faire coder correctement.

      Après si tu considères qu'un faux résultat correspond à ce que tu veux alors

      c'est bon le problème est réglé

      On pourrait à ce que le montant brut soit 100 et le montant TTC 120, qu'en penses-tu ?

      Ce n'est pas plus concluant avec un peu d'inflation.

      Testé avec le code de 19:47


      0