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 :

Aide exercice 8.11 Apprendre Python3 G.Swinnen.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut Aide exercice 8.11 Apprendre Python3 G.Swinnen.
    Bonsoir, de nouveau je me permets de faire appel à vos services qui m'avaient été d'une grande aide la dernière fois. Je suis bloqué sur un exercice d'un cours python, le cours Python de Swinnen et je pense en comprendre le principe mais je n'ai aucune idée de comment l'appliquer. J'ai essayé plusieurs tests (plutôt fumeux) mais rien à faire.

    Voici l'exercice:

    Modifiez le script ci-dessous de manière à faire apparaître un petit cercle rouge à l’endroit où l’utilisateur a effectué son clic (vous devrez d’abord remplacer le widget Frame par un widget Canvas).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from tkinter import * 
    def pointeur(event): 
        chaine.configure(text = "Clic détecté en X =" + str(event.x) +\ 
                                ", Y =" + str(event.y)) 
    fen = Tk() 
    cadre = Frame(fen, width =200, height =150, bg="light yellow") 
    cadre.bind("<Button-1>", pointeur) 
    cadre.pack() 
    chaine = Label(fen) 
    chaine.pack() 
    fen.mainloop()
    En vous remerciant par avance pour un début de piste. Je continue à chercher de mon coté...

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    1) Remplacez le widget Frame par un Canvas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cadre = Frame(fen, width =200, height =150, bg="light yellow")
    2) faire apparaître un petit cercle rouge à l’endroit où l’utilisateur a effectué son clic.
    Dans pointeur vous récupérez déjà event.x et event.y.
    Pour créér un cercle dans un Canvas c'est canvas.create_oval(x1, y1, x2, y2, options).
    Vous devez donc remplacer le chaine.configure de pointeur par un cadre.create_oval et utiliser event.x et event.y pour le placer. A vous de voir pour le diametre (comprendre + et -).
    Petit rappel sur create_oval :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x1y1---------------
    I                 I
    I                 I
    I                 I
    I                 I
    I                 I
    _______________x2y2
    Pour la couleur l'option c'est fill.
    Du coup chaine est inutile.

    Bon code

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Re,

    Vous comprendrez a la relecture du tuto que le but ici n'est pas de vous former à tkinter mais de vous amener une logique (une 'tête bien faite'). tkinter étant quasi universel et les gui la façon la plus ludique d'entrevoir les classes, instances et objets.
    Dans cette optique je vous conseillerais de revoir plus précisément ce que vous aurez appris à la fin de chaque chapitre. Par exemple, puisque c'est dans le sujet, lorsque dans le chapitre on vous parle du Widget Canvas pensez à prendre le temps d'en regarder toutes les possibilités.
    Une tête bien faite et bien pleine c'est pratique.

    Bonne découverte

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut
    Bonsoir, merci une fois de plus votre aide m'a été d'une grande utilité voici ma soution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from tkinter import * 
    def pointeur(event): 
        can.create_oval(event.x - r,event.y - r,event.x + r,event.y + r,outline= "red")
     
    r = 5
     
    fen = Tk() 
    can = Canvas(fen, width =200, height =150, bg="light yellow") 
    can.bind("<Button-1>", pointeur) 
    can.pack() 
    fen.mainloop()
    Je m'assure pourtant à chaque fin de chapitre d'être sur d'avoir assimilé le cours et les exercices mais parfois la solution ne me saute pas aux yeux donc encore merci pour votre aide rapide et efficace.

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Et vous m'avez bien eu sur ce coup là. L'énoncé parle d'un cercle donc vous avez raison avec outline.
    Je me rattraperais (c'est presque de la mauvaise foi ) en disant que le fait de rajouter la variable r est inutile.

    @+

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut
    Re, comment supprimer la variable r ? En remplaçant r par une valeur numérique à l'intérieur de create_oval:
    can.create_oval(event.x - 5,event.y - 5,event.x + 5,event.y + 5,outline= "red") ?
    Ou vous pensez à une autre solution ?

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

Discussions similaires

  1. Aide exercice 8.14 apprendre Python G.swinnen
    Par Asimoov dans le forum Tkinter
    Réponses: 1
    Dernier message: 25/03/2011, 03h08
  2. Aide exercice de math/Algorithmique
    Par laurent2628 dans le forum Mathématiques
    Réponses: 11
    Dernier message: 10/06/2008, 13h24
  3. Aide exercices Java débutant
    Par dalil777 dans le forum Général Java
    Réponses: 9
    Dernier message: 08/02/2008, 22h19
  4. Aide exercice C
    Par lkaiman dans le forum C
    Réponses: 3
    Dernier message: 31/12/2007, 12h57

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