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 :

[wxPython]detecté la position de la souris sur une image dans wx.ScrolledWindow


Sujet :

Python

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    771
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 771
    Points : 2 132
    Points
    2 132
    Par défaut [wxPython]detecté la position de la souris sur une image dans wx.ScrolledWindow
    Bonjour,

    je suis sous windows xp,
    J'aurais voulue savoir si il existe une manière de détecter la position de la souris dans un ScrollWindow.

    En effet j'arrive a détecter la position de la souris dans le ScrollWindow quand il est vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	self.Bind(wx.EVT_LEFT_DOWN, self.on_mouse_down)
    par contre si j'y insert un bitmap, le détection ne se fait plus a passage sur l'image.

    J'ai bien essayé de reporter le test sur le Bitmap en passant par "wx.StaticBitmap"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	self.bmp = bmp
    	self.static_bmp wx.StaticBitmap(self,-1,self.bmp)
     
            self.static_bmp.Bind(wx.EVT_LEFT_DOWN,self.OnButtonClick)
    Mais il me dit que le static_bmp ne possède pas "Bind". sauriez vous quel est la bonne façon de procéder? Ou est ce impossible a faire?

    Edit: j'ai déjà lancé des recherches sur firefox, mais la seul chose que j'ai trouvé, c'est des gens posant la même question, mais aucun tutoriel la dessus par contre.

    Bonne journée,

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    771
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 771
    Points : 2 132
    Points
    2 132
    Par défaut
    Bon j'ai réussis a détecter un clic sur une image, voila le code pour ceux qui chercherais aussi :

    Si je trouve pour le faire avec un windowscroll je le mettrais a la suite. Je tiens a dire quand même que pour si retrouver dans les event avec la doc, c'est particulièrement difficile.

    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
     
    #!/usr/bin/python
    # -*- coding: iso-8859-15 -*-
     
    import wx
     
    class Affichage(wx.Frame):
        def __init__(self, titre):
            wx.Frame.__init__(self, None, 1, title = titre, size = (400, 400))
     
     
            graphicFilename = 'armuredepoque.PNG'
            self.img_Bmp = wx.Image( graphicFilename, wx.BITMAP_TYPE_ANY ).ConvertToBitmap()
            self.Pnl = wx.Panel(self,size=(200,200))
            self.static_bmp = wx.StaticBitmap(self.Pnl, -1 ,self.img_Bmp , pos=(0,0))
     
            wx.EVT_LEFT_DOWN(self.static_bmp,   self.MouseDown)
     
        def MouseDown(self, event):
                pt_pos = event.GetPosition()  # position tuple
                print ('position mouse dans l image : = ' + str(pt_pos))
                self.SetTitle(str(pt_pos))
     
     
    class MonApp(wx.App):
        def OnInit(self):
            fen = Affichage("Exemple 1")
            fen.Show(True)
            self.SetTopWindow(fen)
            return True
     
    app = MonApp()
    app.MainLoop()
    La suite avec un scrolledWindow, ça change rien en fait :

    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
     
    #!/usr/bin/python
    # -*- coding: iso-8859-15 -*-
     
    import wx
     
    class Affichage(wx.Frame):
        def __init__(self, titre):
            wx.Frame.__init__(self, None, 1, title = titre, size = (400, 400))
     
     
            self.graphicFilename = 'cowgirl_gunslinger_by_mjranum_stock.jpg'
            #pos_x,pos_y=self.win_scroll.GetViewStart()
            pos_x,pos_y=(0,0)
     
            sizer = wx.BoxSizer()#Sizer pour le win_scroll
     
            self.win_scroll=wx.ScrolledWindow(self)
     
            sizer.Add(self.win_scroll, 1, wx.EXPAND|wx.ALL, 2)
            self.SetSizer(sizer)
     
            self.img = wx.Image( self.graphicFilename, wx.BITMAP_TYPE_ANY )
            self.img_bmp =self.img.ConvertToBitmap()
     
            self.win_scroll.SetVirtualSize(wx.Size(self.img_bmp.GetWidth(),self.img_bmp.GetHeight()))
     
            #self.Pnl = wx.Panel(self,size=(200,200))
     
            self.static_bmp = wx.StaticBitmap(self.win_scroll, 1 ,self.img_bmp)
            self.win_scroll.SetScrollRate(1,1)#a verifier
     
            self.win_scroll.Scroll(0,0)
            self.win_scroll.Refresh()
     
            wx.EVT_LEFT_DOWN(self.static_bmp,   self.OnLeftDown)
     
        def OnLeftDown(self, event):
                pt_pos = event.GetPosition()  # position tuple
                print ('position mouse dans l image : = ' + str(pt_pos))
                self.SetTitle(str(pt_pos))
     
     
    class MonApp(wx.App):
        def OnInit(self):
            fen = Affichage("Exemple 1")
            fen.Show(True)
            self.SetTopWindow(fen)
            return True
     
    app = MonApp()
    app.MainLoop()
    Est ce que quelqu'un pourrait m'éclairer sur la fonction "SetScrollRate()" du ScrolledWindow. J'ai regardé le tuto sur le site, mais je vois pas bien comment gérer le ratio. Comment faut il le comprendre pour bien l'utiliser avec un Sizer?

    De la même manière savez ou je pourrait trouver de la doc lié au event du wx.aui? Je ne réussis pas a mettre en forme le scrollWindow lorsque les fenêtre change de forme.

Discussions similaires

  1. [Débutant] Récupération clic de souris sur une image dans un GUI
    Par Ma29200 dans le forum Interfaces Graphiques
    Réponses: 43
    Dernier message: 27/04/2012, 15h11
  2. Récupérer la position de la souris sur une image
    Par megamario dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/04/2011, 13h15
  3. Réponses: 5
    Dernier message: 09/09/2006, 23h49
  4. Réponses: 4
    Dernier message: 08/09/2006, 04h36
  5. [DHTML]position de la souris sur une image
    Par Daï2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 18/05/2006, 15h57

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