Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calculer une équation à partir d'un stringVar Tk

    29 mars 2020 à 19:26:05

    Bonjour, je cherche à calculer une valeur entrée dans un stringVar sur tkinter, j'aimerais calculer des équations : 

    from tkinter import *
    from tkinter import messagebox
    from tkinter import Tk
    import tkinter.font
    
    fn = Tk()
    fn.title('Mathéquation')
    fn.geometry('640x360')
    fn.iconbitmap("mathicon.ico")
    
    #Toutes les defs
    def bouCalc():
        messagebox.showinfo("Mathéquation", "Calculeuh en coureuh")
    
    #Affiche titre de l'app
    labelTitle = LabelFrame(fn, text="Bienvenue sur :")
    labelTitle.pack(expand="YES")
    Label(labelTitle, text="Mathéquation", font=(None, 30), padx="15", pady="15").pack(side=LEFT)
    
    #Importation de l'image Logo
    Logo = PhotoImage(file="Logo.png")
    canvasLogo = Canvas(labelTitle, width="128", height="128")
    canvasLogo.create_image(64, 64, image=Logo)
    canvasLogo.pack(side=TOP)
    
    #Creation du label pour l'input
    labelInput = LabelFrame(fn, text="Veuillez entrer l'équation :", font=(None, 15), padx="5", pady="5")
    labelInput.pack(expand="YES")
    
    #Entrer L'equation
    value = StringVar() 
    value.set("Equation")
    entree = Entry(labelInput, width=80)
    entree.pack(expand="yes", pady="2")
    
    def recupere():
        messagebox.showinfo("Alerte", entree.get())
    
    #Bouton Calculer
    bCalc = Button(labelInput, text="Calculer", font=(None, 10), padx="5", pady="5", command=recupere)
    bCalc.pack(expand="yes")
    
    fn.mainloop()
    



    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2020 à 21:07:48

      Bonjour, si on ajoute un peu d'abstraction a ton problème, tu souhaite «executer» un opération mathématique contenu dans une string.

      c'est un problème assez compliquée, mais tu a deux solutions:

      • faire un «eval(valeur)», mais c'est une très mauvaise idée car l'eval() vas exécuter n'importe quelle code python, et sans aucune difficulté.
      • utiliser une librairie pour parser cette opération et la calculer toi même :
        • pyparsing serait sans doute un peu trop compliquée
        • ast a l'aire plus dédiée et plus simple.
      • Partager sur Facebook
      • Partager sur Twitter
        30 mars 2020 à 22:38:05

        Si on va plus loin dans la demande, calculer une équation n'indique pas suffisamment précisément l'objectif de ton exercice.

        Pour rentrer dans ce domaine plus complexe des simples opérations mathématiques, pense à voir du côté de SymPy.

        • Partager sur Facebook
        • Partager sur Twitter

        Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
        La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          30 mars 2020 à 23:32:19

           calculer une équation ne veut rien dire, tu veux dire résoudre peut-être. Je ne veux pas te dissuader de ton projet mais si tu n'arrives pas à savoir seul comment on capture le contenu d'une StrinVar depuis une Entry, tu vas avoir du mal à parser une équation quelconque et même du second degré. 

          Pour être un petit peu plus réaliste, si tu veux juste un solver d'équation du second degré, place

          • trois entrées pour les coefficients a, b et c,
          • un bouton résoudre 
          • un bouton pour effacer
          • un label pour afficher tes solutions, numériques dans un premier temps, formelles dans un second temps
          et tu pourras considérer avoir réalisé un joli projet.
          Et effectivement, si tu veux déjà te rendre compte de ce qu'est un solver d'équation regarde Sympy ou SageMath. Ce sont des choses qui n'ont à rien à voir des interfaces graphiques.
          • Partager sur Facebook
          • Partager sur Twitter

          Calculer une équation à partir d'un stringVar Tk

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown