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 :

Tracage de forme


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut Tracage de forme
    Bonjour,

    J'aurais besoin de votre aide, j'ai une fenêtre ou je peux tracer des cercles, ronds ou triangles mais je voudrais pouvoir voir le tracer quand je dessine. Je sais pas si vous m'avez compris, mais quand je dessine je vois le dessin que après avoir lâché le clic de la souris et moi je voudrais le voir en même temps que je bouge la souris pour l'agrandir par exemple.

    Y'a t-il une fonction à rajouter ou une option ?

    Merci d'avance pour votre aide

  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
    Bonsoir,

    Citation Envoyé par yohann22 Voir le message
    Je sais pas si vous m'avez compris
    Non...

    Du code ?

    @+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut
    Bien sur voila le code:

    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
    # initialisation des variables de position
    x1='vide'
    y1='vide'
    x2='vide'
    y2='vide'
     
     
    # gestionnaire d'evenement associe au clic sur le canevas
    def clic(event):
        global x1,y1
        x1=event.x
        y1=event.y
    canevas.bind('<ButtonPress-1>',clic)
     
     
     
    # gestionnaire d'evenement associe au declic sur le canevas
    def declic(event):
        global x1,y1,x2,y2
        x2=event.x
        y2=event.y
        canevas.create_oval(x1,y1,x2,y2,fill='black')
    canevas.bind('<ButtonRelease-1>',declic)
    #L'oval s'affiche uniquement après avoir décliquer sur le canvas, je voulais donc savoir si on pouvait voir l'oval se former pendant que l'on reste en clique sur la souris et qu'on la déplace ??

  4. #4
    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,

    Comme cela ?

    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
    # -*- coding: utf-8 -*-
    #
    #
    #
    from Tkinter import *
     
    class test(Tk):
        def __init__(self):
            Tk.__init__(self)
            self.x1=None
            self.x2=None
            self.y1=None
            self.y2=None
            self.title("test")
            self.can=Canvas(self, bg='white')
            self.can.pack()
            Button(self, text="Quit", command=self.destroy).pack()
            self.can.bind('<ButtonPress-1>',self.clic)
            self.can.bind('<B1-Motion>',self.modif)
     
        def modif(self, event):
            self.x2=event.x
            self.y2=event.y
            self.can.coords(self.item, self.x1, self.y1, self.x2, self.y2)
     
        def clic(self, event):
            self.x1=event.x
            self.y1=event.y
            self.x2=event.x
            self.y2=event.y
            self.item=self.can.create_oval(self.x1, self.y1, self.x2, self.y2, fill='black')
     
    if __name__== '__main__':     
        fen=test()    
        fen.mainloop()
    @+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut
    Exactement ! Merci beaucoup

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Par défaut
    Bonjour à vous,

    Désolé de reprendre ce sujet qui m'a l'air résolu, mais bon... Je vous explique, j'ai repris le code de PauseKawa, et j'ai voulu le modifier à ma guise...

    Pour les cercles c'est nikel, mais si je veux ajouter un ou deux boutons 'Carre' ou 'Triangle' ca plante lors de l'execution, il me balance des problèmes de coordonnées dans le terminal...

    L'erreur qui revient le plus est : ma fonction clic ou clicR prend 2 arguments, self et event, et lorsque je l'appelle, j'oublie le 'event', mais c'est parce que je n'ai pas trouvé comment l isoler (enfin mal compris son utilité... (il renvoie les coordonnées x et y ?))
    Ci-joint mon code :
    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 *
     
    class rotationAgrandissment(Tk):
        def __init__(self):
            Tk.__init__(self)
            self.x1=None
            self.x2=None
            self.y1=None
            self.y2=None
            self.title("test")
            self.can=Canvas(self, bg='white')
            self.can.pack()
            Button(self, text="Quit", command=self.destroy).pack()
    	Button(self, text="Carre", command=self.clicR).pack()
    	Button(self, text="Cercle", command=self.clic).pack()
            Button(self, text="Triangle", command=self.clicT).pack()
     
            self.can.bind('<ButtonPress-1>',self.clic)
            self.can.bind('<B1-Motion>',self.modif)
     
        def modif(self, event):
            self.x2=event.x
            self.y2=event.y
            self.can.coords(self.item, self.x1, self.y1, self.x2, self.y2)
     
        def clicR(self, event):
            self.x1=event.x
            self.y1=event.y
            self.x2=event.x
            self.y2=event.y
            #self.item=self.can.create_oval(self.x1, self.y1, self.x2, self.y2, fill='black')
    	self.item=self.can.create_rectangle(self.x1, self.y1, self.x2, self.y2, fill='black')
    	#self.item=self.can.create_polygone(self.x1, self.y1, self.x2, self.y2, fill='black')
     
        def clic(self, event):
            self.x1=event.x
            self.y1=event.y
            self.x2=event.x
            self.y2=event.y
            self.item=self.can.create_oval(self.x1, self.y1, self.x2, self.y2, fill='black')
    	#self.item=self.can.create_rectangle(self.x1, self.y1, self.x2, self.y2, fill='black')
    	#self.item=self.can.create_polygone(self.x1, self.y1, self.x2, self.y2, fill='black')
     
         def clicT(self, event):
            self.x1=event.x
            self.y1=event.y
            self.x2=event.x
            self.y2=event.y
            self.x3=event.x
            self.y3=event.y
            #self.item=self.can.create_oval(self.x1, self.y1, self.x2, self.y2, fill='black')
    	#self.item=self.can.create_rectangle(self.x1, self.y1, self.x2, self.y2, fill='black')
    	self.item=self.can.create_polygone(self.x1, self.y1, self.x2, self.y2, self.x3, self.y3, fill='black')
     
    if __name__== '__main__':     
        fen=rotationAgrandissment()    
        fen.mainloop()
    Edit : Puis-je associer self.can.bind('<ButtonPress-1>',self.clicR) ? logiquement, le bouton gauche de la souris ne peut etre utilisé qu'une seule fois .
    Edit 2 : Merci d'avance ! *en perd sa politesse*

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

Discussions similaires

  1. Réponses: 87
    Dernier message: 06/07/2011, 15h33
  2. [Kylix] SIGSEGV 11 - creation form
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 29/08/2002, 15h24
  3. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 08h32
  4. Form principale non visible au demarrage!!!!
    Par toufou dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/07/2002, 21h49

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