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

Python Discussion :

Exercice 8.14 Swinnen


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Par défaut Exercice 8.14 Swinnen
    Bonjour,

    J'ai un probleme avec cet exo, message d'erreur : 'int' object is not callable.
    Sans compter le fait que c'est une usine à gaz. Je cherche à calculer et à afficher les 2 distances.
    Merci.

    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
    58
    59
    60
    61
    62
    63
    64
    from tkinter import *
    from math import sqrt
     
    def distance(x1, y1, x2, y2):
        "distance séparant les points x1,y1 et x2,y2"
        d = sqrt((x2-x1)**2 + (y2-y1)**2) # théorème de Pythagore
        return d
     
     
     
    # procédure générale de déplacement :
    def pointeur(event):
        i=0
        x[n.get()],y[n.get()]=event.x,event.y
        can1.coords(oval[n.get()], event.x,event.y, event.x+30,event.y+30)
     
        di[0] = distance(x[2], y[2],x[1],y[1])
        di[1] = distance(x[2], y[2],x[0],y[0])
        di[2] = distance(x[0], y[0],x[1],y[1])
        while i<len(di)():
            if i != n.get():
                valDis.configure(text="Distance "+str(i) +"= " +str(di[i]))
            i=i+1
     
     
    # gestionnaires d'événements :
     
     
    #------ Programme principal -------
    # les variables suivantes seront utilisées de manière globale :
    x=[0,100,200] # coordonnées initiales
    y=[100,100,100]
    oval=[0,0,0]
    di=[0,0,0]
     
    # Création du widget principal ("maître") :
    fen = Tk()
    fen.title("Exercice d'animation avec tkinter")
    n=IntVar()
    # création des widgets "esclaves" :
    can1 = Canvas(fen,bg='dark grey',height=300,width=300)
    oval[0] = can1.create_oval(x[0],y[0],x[0]+30,y[0]+30,width=2,fill='red')
    oval[1] = can1.create_oval(x[1],y[1],x[1]+30,y[1]+30,width=2,fill='blue')
    oval[2] = can1.create_oval(x[1],y[1],x[1]+30,y[1]+30,width=2,fill='yellow')
    can1.bind("<Button-1>",pointeur)
    can1.pack(side=TOP)
     
    valDis = Label(fen, text="Distance1")
    valDis.pack()
    valDis1 = Label(fen, text="Distance2")
    valDis1.pack()
     
    rButton=Radiobutton(fen,text='rouge',variable=n,value=0)
    rButton.pack()
    rButton1=Radiobutton(fen,text='bleu',variable=n,value=1)
    rButton1.pack()
    rButton2=Radiobutton(fen,text='jaune',variable=n,value=2)
    rButton2.pack()
    rButton.select()
     
     
     
    # démarrage du réceptionnaire d’évènements (boucle principale) :
    fen.mainloop()

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonsoir,
    En reprenant le code, ligne 20, est écrit:
    Que viennent fait les parenthèses terminales?

    PS: à part cela, le tout semble répondre aux attentes, non?

    Clodion

  3. #3
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Oui , c'est bien l'erreur . Mais à quoi sert la variable n = IntVar() ? Ce serait les variables globales , non ? Ce n est utilisé comme commande , c'est assez bizarre .

    Aussi , pourquoi n'y a t-il de corrigés aux exercices du livre ?

  4. #4
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonsoir,
    La variable n dans n=IntVar() ligne 23 est une variable nécessaire pour le lien avec les Radiobuttons de tkinter.
    Oui, elle est globale.
    Il faut regarder dans le manuel de tkinter pour en aborder le fonctionnement.

    Clodion

  5. #5
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Ok. Car le plus souvent , la variable commande est utilisée avec l'appel de fonctions genre "avance le rectangle" "en haut" "à gauche" . C'est intéressant de savoir cette fonctionnalité , mais ceci ne marche qu'avec des variables globales , donc je ne penses pas que lorsqu'il s'agit d'avancer ou de faire reculer un rectangle , ce soit possible ( les coordonnées du centre du clic ) .
    Cependant, tkinter montre certaines capacités à résoudre les problèmes géométriques .Est-ce que l'on peut utiliser tkinter pour créer des sites (enfin du moins certaines parties) ?

  6. #6
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonsoir,
    Pour l'utilisation de ces variables en tkinter:
    tkinter, p153, point 52
    Sinon, plus généralement, sur developpez.
    Quand à utiliser tkinter pour créer des sites, c'est sans doutes possible… Mais cela n'est vraiment pas fait pour cela.

    Clodion

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

Discussions similaires

  1. [Python 3.X] Exercice Python Gérard Swinnen
    Par werkos dans le forum Général Python
    Réponses: 2
    Dernier message: 02/05/2015, 21h16
  2. Exercice 8.26 Swinnen
    Par loncle dans le forum Général Python
    Réponses: 1
    Dernier message: 08/08/2014, 09h16
  3. Probleme exercice de Gerard Swinnen 8.13
    Par elnabo dans le forum Tkinter
    Réponses: 5
    Dernier message: 23/03/2011, 10h44
  4. Obtenir la solution exercices du bouquin Swinnen
    Par rlejeune dans le forum Général Python
    Réponses: 1
    Dernier message: 26/08/2007, 04h53
  5. [cours de G.Swinnen] exercice 66
    Par airod dans le forum Tkinter
    Réponses: 4
    Dernier message: 14/10/2005, 11h02

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