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 :

Bouger canva par clic au lieu de scroll bar


Sujet :

Tkinter Python

  1. #1
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Par défaut Bouger canva par clic au lieu de scroll bar
    Bonjour à tous!

    Je bosse actuellement sur un projet et mon interface doit notamment afficher une image dans une zone de taille fixe.
    C'est pour cela que lors de l'affichage, si l'image est plus grande que la zone d'affichage, les scrollbars entrent en jeu pour pouvoir parcourir l'image en entier.

    Voila ce que je cherche à faire :
    En plus de pouvoir utiliser ces scrollbars pour parcourir l'image, je cherche à faire en sorte qu'en maintenant le <Button-1> je puisse parcourir le canva à la manière drag en drop tout en mettant à jour les scrollbars. Attention je ne cherche pas à faire bouger juste l'image mais vraiment parcourir le canva.

    je suis bloqué dessus depuis un petit moment et malgré diverses recherche je n'arrive pas à trouver la solution ...

    Quelqu'un aurait il un piste ou un tuto ???

    Merci d'avance,

    NightK

  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,

    toncanvas.bind('<Button-4>', lambda event: event.widget.yview_scroll(-1, UNITS))
    toncanvas.bind('<Button-5>', lambda event: event.widget.yview_scroll(1, UNITS))

    @+

  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
    J'avais 5 min

    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
    #!/usr/bin/env python
    # -*- coding: ISO8859-1 -*-
    #
    #
    from Tkinter import *
     
    root=Tk()
     
    frame = Frame(root, bd=2, relief=SUNKEN)
     
    frame.grid_rowconfigure(0, weight=1)
    frame.grid_columnconfigure(0, weight=1)
     
    xscrollbar = Scrollbar(frame, orient=HORIZONTAL)
    xscrollbar.grid(row=1, column=0, sticky=E+W)
     
    yscrollbar = Scrollbar(frame)
    yscrollbar.grid(row=0, column=1, sticky=N+S)
     
    canvas = Canvas(frame, bd=0,
                    xscrollcommand=xscrollbar.set,
                    yscrollcommand=yscrollbar.set)
     
    canvas.grid(row=0, column=0, sticky=N+S+E+W)
     
    xscrollbar.config(command=canvas.xview)
    yscrollbar.config(command=canvas.yview)
     
    frame.pack()
     
    oval = canvas.create_oval(20,20,70,70,width=2,fill='red')
     
    canvas.bind('<Button-4>', lambda event: event.widget.yview_scroll(-1, UNITS))
    canvas.bind('<Button-5>', lambda event: event.widget.yview_scroll(1, UNITS))
    canvas.bind('<Shift-Button-4>', lambda event: event.widget.xview_scroll(-1, UNITS))
    canvas.bind('<Shift-Button-5>', lambda event: event.widget.xview_scroll(1, UNITS))
     
    root.mainloop()
    @+

  4. #4
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Par défaut
    J'ai trouvé encore plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def dotLocation(event=None):
        scan = canPix.scan_mark(event.x,event.y)
     
    def move_canva(event=None):
        move = canPix.scan_dragto(event.x, event.y, gain = 1)
     
    canPix.bind("<B1-Motion>", move_canva)
    canPix.bind("<Button-1>", dotLocation)
    =)

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

    Bien cela, je me le garde de coté.
    Juste l'event pour dotLocation a changer sans doute par un Shift ou autre mais c'est hors sujet.
    J'aime bien l'utilisation de la roulette quand même.

    @+

  6. #6
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Par défaut
    Maintenant que j'ai réussi cela, l'étape suivante consiste à dessiner des points sur l'image affichée!

    2 problèmes m'embétent:
    - Si je zoom après avoir dessiné des points, ceux ci passent en arriere plan de l'image... et je ne trouve pas comment faire pour les attacher à l'image pour éviter ce problème.

    - si je décale l'image avec une des scrollbars, et que je click pour placer un point, il sera décalé (compréhensible) mais je ne sais pas comment régler ce problème non plus .... =/

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/01/2012, 18h40
  2. Tri par clic sur étiquettes
    Par Kloun dans le forum Access
    Réponses: 4
    Dernier message: 03/02/2006, 08h32
  3. charger nouvelle page par clic sur bouton (pas pop-up)
    Par michaelbob dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/09/2005, 16h04
  4. sélection d'une ligne DBGrid par clic
    Par duffman dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/05/2004, 13h45
  5. Selection par clic de souris
    Par bilbonec dans le forum OpenGL
    Réponses: 7
    Dernier message: 16/04/2004, 00h25

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