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 :

Déplacer un objet graphique d'un canvas (cercle, rectangle , etc) en python Tkinter


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 72
    Par défaut Déplacer un objet graphique d'un canvas (cercle, rectangle , etc) en python Tkinter
    bonjour à tous

    j'ai un petit programme qui dessine des forme géométriques sur un canvas, j'ai fait en sorte qu'on puisse déplacer sur l'écran ces formes (cliquer sur la forme et l déplacer avec la souris)

    là je suis entrain de le tester avec un cercle.

    voici le code qui le fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def drawcircle(canvas,x,y,rad,cercleColor):
        cercle = canvas.create_oval(x-rad,y-rad,x+rad,y+rad,width=0,fill=cercleColor)
     
    def deplacer(event):
        cercle =  canvas.find_withtag("current")[0]
        souris = canvas.find_closest(event.x, event.y)
        canvas.move(cercle, event.x-canvas.coords(souris[0])[0] ,event.y-canvas.coords(souris[0])[1])
    le problème est lorsque je clique la première fois sur l'objet il se déplace d'abord en rajoutant la valeur du rayon du cercle à ses coordonnées pour qu'en suite il suit le déplacement de la souris, donc il y a un décalage entre le pointeur de la souris et l'endroit du cercle sur lequel j'ai cliqué

    j'aimerai donc récupérer le rayon du cercle pour le soustraire dès le début aux coordonnées.

    où si vous avez une meilleur idée pour que le cercle suit directement le mouvement de la souris, je suis preneur.

    voila, merci pour vos réponses

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 706
    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 706
    Par défaut
    Salut,

    Citation Envoyé par lenas_tshaleb Voir le message
    j'aimerai donc récupérer le rayon du cercle pour le soustraire dès le début aux coordonnées.
    Pour çà il faudrait stocker "rayon" dans un objet associé à l'identifiant retourné par .create_oval (car tkinter ne sait pas ce qu'est un cercle). Mais vous pouvez aussi le calculer: canvas.coords(souris[0]) vous retourne des "coordonnées" équivalentes à celles passées pour canvas.create_oval.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Déplacer un objet graphique dans word
    Par latitude38 dans le forum Word
    Réponses: 2
    Dernier message: 02/03/2012, 09h46
  2. [Dessin] Objet graphique
    Par silver_78 dans le forum 2D
    Réponses: 2
    Dernier message: 03/10/2005, 10h52
  3. Réponses: 4
    Dernier message: 09/03/2005, 17h15
  4. [Swing][graphics]objets graphiques qui s'effacent
    Par TylerKnoxx dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 11/08/2004, 16h36
  5. Réponses: 3
    Dernier message: 09/02/2003, 01h09

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