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 :

Tracer une courbe d'une fonction [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Tracer une courbe d'une fonction
    Bonjour,
    J'essaye de faire un programme me permettant de tracer une fonction polynôme du second degré grâce à tkinter, et non matplotlib..
    J'ai déjà programmer la fonction en elle même, mais quand il s'agit de tracer la courbe représentative je bloque... Si pouviez m'aider, me donner des pistes pour savoir comment tracer la fonction ça serait très gentil !
    Merci beaucoup !!
    Voila où j'en suis :

    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
    from tkinter import *
    from math import sqrt
     
     
    a = int(input("Entrez la valeur de a : "))
    b = int(input("Entrez la valeur de b : "))
    c = int(input("Entrez la valeur de c : "))
    x = int((b*b)-(4*a*c))
    print("Delta=")
    print(x)
    if x<0:
        print("Le polynôme n'a pas de racines")
    elif x>=0:
        y=sqrt(x)
        print(y)
        if x==0:
            d=(-b/(2*a))
            print("La racine du polynôme est : ")
            print(d)
        if x>0:
            d=((-b-y)/(2*a))
            e=((-b+y)/(2*a))
            print("Les racines du polynôme sont :")
            print(d)
            print("et")
            print(e)
     
    Fenetre = Tk()
    master = Tk()
    w = Canvas(master, width=200, height=100)
    mainloop()
    Merci beaucoup !

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

    Citation Envoyé par python69005 Voir le message
    Si pouviez m'aider, me donner des pistes pour savoir comment tracer la fonction ça serait très gentil !
    Vu le code que vous avez posté, apprendre la programmation évènementielle dans un tuto, puis ouvrir une documentation du widget Canvas pour comprendre ce qu'on peut faire avec et imaginer comment tracer une courbe... est le bon chemin à suivre.
    Et si vous êtes pressé d'avoir un résultat, matplotlib est un bon choix.

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Tracer la fonction grace à une liste
    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
    from tkinter import *
    ihm=Tk()
    myFrame=Frame(ihm,bd=2,relief=RIDGE)
    myFrame.grid(row=0,column=0)
    menu=Frame(ihm,bd=2,relief=RIDGE)
    menu.grid(row=0,column=1,sticky=N)
    Label(myFrame,text="Ma fonction").grid(row=0,column=0)
     
    # valeur a #
     
    Label(menu,text="Choisir la valeur de a").grid(row=0,column=0)
    drawing=Canvas(myFrame, width=600,height=500)
    drawing.grid(row=1,column=0)
    valEntry=IntVar(menu,100)
     
    def choisirvaleura():
        a=valEntry.get()
     
    def choisirvaleurEvent(e): choisirvaleurb()
    myEntry = Entry(menu,textvariable=valEntry)
    myEntry.grid(row=1,column=0)
    myEntry.bind('<KeyPress-Return>',choisirvaleurEvent)
    Button(menu,width=10,command=choisirvaleura,text='Valider').grid(row=2,column=0)
     
     
    # valeur b #
     
    Label(menu,text="Choisir la valeur de b").grid(row=4,column=0)
     
    valEntry2=IntVar(menu,100)
    def choisirvaleurb():
        b=valEntry.get()
    def choisirvaleurEvent(e): choisirvaleura()
    myEntry2 = Entry(menu,textvariable=valEntry2)
    myEntry2.grid(row=5,column=0)
    myEntry2.bind('<KeyPress-Return>',choisirvaleurEvent)
    Button(menu,width=10,command=choisirvaleurb,text='Valider').grid(row=6,column=0)
     
     
     
    # valeur c #
     
    Label(menu,text="Choisir la valeur la c").grid(row=7,column=0)
     
    valEntry3=IntVar(menu,100)
    def choisirvaleurc():
        c=valEntry.get()
    def choisirvaleurEvent(e): choisirvaleurc()
    myEntry3 = Entry(menu,textvariable=valEntry3)
    myEntry3.grid(row=8,column=0)
    myEntry3.bind('<KeyPress-Return>',choisirvaleurEvent)
    Button(menu,width=10,command=choisirvaleurc,text='Valider').grid(row=9,column=0)
    ihm.mainloop()
     
    # representer la fonction #
    Voici mon avancement, pour l'instant. Comment puis-je reprsenter ma fonction ? Mon professeur m'a inqué que je devais faire une liste de variables, une liste de point .. Pourriez vous m'aider s'il vous plait ?
    Merci beaucoup !!

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

    Citation Envoyé par python69005 Voir le message
    Voici mon avancement, pour l'instant. Comment puis-je reprsenter ma fonction ? Mon professeur m'a inqué que je devais faire une liste de variables, une liste de point .. Pourriez vous m'aider s'il vous plait ?
    Une fonction, c'est y = f(x) et si on fait varier "x" , on aura une liste de "y" associés.
    Après comment tracer çà dans un Canvas même réponse que précédemment (d'autant que vous n'avez pas encore écrit votre fonction juste bataillé pour récupérer a, b, c... que vous auriez pu fixer arbitrairement pour écrire et tracer votre fonction).

    - W

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Supprimer la courbe une fois créée + utliser spinbox
    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
    from tkinter import *
     
    ihm=Tk()
    myFrame=Frame(ihm,bd=2,relief=RIDGE)
    myFrame.grid(row=0,column=0)
    menu=Frame(ihm,bd=2,relief=RIDGE)
    menu.grid(row=0,column=1,sticky=N)
    Label(myFrame,text="Ma fonction").grid(row=0,column=0)
     
     
     
     
    Label(menu,text="Choisir la valeur de a , b et c").grid(row=0,column=0)
    drawing=Canvas(myFrame, width=900,height=800)
    drawing['bg']='white'
    drawing.grid(row=1,column=0)
    drawing['scrollregion']=(-450,-600,400,200)
     
     
     
    valEntry=IntVar(menu,2)
    valEntry2=IntVar(menu,2)
    valEntry3=IntVar(menu,2)
     
     
    def creerListe(a,b,c):
        def f(x) :
            return (-a*x*x)+(b*x)+c
        liste = []
        for x in range (-30,30):
            liste.append(x)
            liste.append(f(x))
        return liste
     
     
    myEntry = Entry(menu,textvariable=valEntry)
    myEntry.grid(row=1,column=0)
     
    myEntry2 = Entry(menu,textvariable=valEntry2)
    myEntry2.grid(row=5,column=0)
     
    myEntry3 = Entry(menu,textvariable=valEntry3)
    myEntry3.grid(row=8,column=0)
     
     
    #tracer fonction#
     
    def creerpolygone():
        global id
        a=valEntry.get()
        b=valEntry2.get()
        c=valEntry3.get()
        id = drawing.create_polygon(*creerListe(a,b,c),outline='red',width=2,fill='')
     
    Button(menu,width=10,command=creerpolygone,text='Valider').grid(row=9,column=0)
     
    ihm.mainloop()

    Bonjour, voici mon avancée sur mon programme. Ma courbe se trace !!!
    Cependant j'ai un problème une fois que ma courbe se trace, et que je veux en tracer une autre avec d'autres valeurs, la deuxième courbe se trace par dessus la première. J'ai cru comprendre qu'il faut utiliser la fonction delete ou destroy mais je sais pas comment l'utiliser.. J'avais aussi entendu que l'on pouvait créer un canvas blanc par dessus la courbe lorsque on veut en faire une deuxième. Merci de votre aide
    De plus, j'aimerais utiliser le widget spinbox afin de pouvoir changer les valeurs de a,b et c plus facilement. Cependant je n'arrive pas à le lier à la valeur de a : je crée juste un cadre ou je rentre une valeur mais c'est inutile !!
    Merci encore pour votre précieuse aide !!

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

    Citation Envoyé par python69005 Voir le message
    J'ai cru comprendre qu'il faut utiliser la fonction delete ou destroy mais je sais pas comment l'utiliser..
    delete est une méthode du Canvas. Pour apprendre à l'utiliser, il faut commencer par lire la documentation puis, si vous ne comprenez pas trop, vous pouvez écrire un petit exemple pour voir comment l'utiliser ou rechercher sur Internet pour lire les codes de ce qui l'utilisent.

    - W

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/03/2016, 18h48
  2. [Débutant] passage d'une courbe fermée à une courbe non fermée
    Par diadieuf dans le forum MATLAB
    Réponses: 0
    Dernier message: 11/03/2011, 18h43
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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