Please support our Python advertiser: Programming Forums
Views: 1126 | Replies: 2
![]() |
•
•
Join Date: Mar 2006
Posts: 56
Reputation:
Rep Power: 3
Solved Threads: 0
Hi
I am trying to get the mouse position on my Canvas
if i move the mouse, i will see coordinates of mouse not in canvas but in window. I have to get canvas coordinates. Is there some way how to solve it?
Thanks!
I am trying to get the mouse position on my Canvas
# -*- coding: cp1250 -*-
import wx
class Okno:
def __init__(self,parent):
self.okno=wx.MDIChildFrame(parent,title=u"Náhled situace",id=-1)
self.okno.Maximize()
self.okno.SetAutoLayout(True)
self.okno.SetBackgroundColour("#FCFCFE")
self.sizer = wx.FlexGridSizer(2,2,0,0)
# Add canvas
self.platno = wx.ScrolledWindow(self.okno, id=wx.ID_ANY)
self.platno.EnableScrolling(True, True)
self.sirka = 10000
self.vyska = 10000
self.platno.SetScrollbars(20, 20, self.sirka/20, self.vyska/20)
self.sizer.Add(self.platno, 1, wx.EXPAND)
self.sizer.Add((0,0))
self.sizer.Add((0,0))
self.sizer.Add((0,0))
self.sizer.AddGrowableRow(0, 1)
self.sizer.AddGrowableCol(0, 1)
self.platno.Bind(wx.EVT_MOTION, self.Pohyb)
self.okno.SetSizer(self.sizer)
def Pohyb(self, akce):
print akce.GetPosition()#doesnt work correctly
if __name__ == "__main__":
okno = wx.App(0)
parent=wx.MDIParentFrame(None,size=wx.Size(500,500))
Okno(parent)
parent.Show()
okno.MainLoop()Thanks!
•
•
Join Date: Jul 2006
Posts: 562
Reputation:
Rep Power: 4
Solved Threads: 72
•
•
•
•
if i move the mouse, i will see coordinates of mouse not in canvas but in window.
Do you mean that you want the logical coordinates instead of the device coordinates?
If I'm reading you right, when the window is scrolled either vertically or horizontally, you want the mouse coordinates to reflect where you are logically on the canvas, rather than where you are physically on the device, ano?
See if this works for you:
Python Syntax (Toggle Plain Text)
# -*- coding: cp1250 -*- import wx class Okno: def __init__(self,parent): self.okno=wx.MDIChildFrame(parent,title=u"Náhled situace",id=-1) self.okno.Maximize() self.okno.SetAutoLayout(True) self.okno.SetBackgroundColour("#FCFCFE") self.sizer = wx.FlexGridSizer(2,2,0,0) # Add canvas self.platno = wx.ScrolledWindow(self.okno, id=wx.ID_ANY) self.platno.EnableScrolling(True, True) self.sirka = 10000 self.vyska = 10000 self.platno.SetScrollbars(20, 20, self.sirka/20, self.vyska/20) self.sizer.Add(self.platno, 1, wx.EXPAND) self.sizer.Add((0,0)) self.sizer.Add((0,0)) self.sizer.Add((0,0)) self.sizer.AddGrowableRow(0, 1) self.sizer.AddGrowableCol(0, 1) self.platno.Bind(wx.EVT_MOTION, self.Pohyb) self.okno.SetSizer(self.sizer) def Pohyb(self, akce): pos = akce.GetPosition() print pos, #doesnt work correctly x,y = pos print self.platno.CalcUnscrolledPosition(x,y) # <<< if __name__ == "__main__": okno = wx.App(0) parent=wx.MDIParentFrame(None,size=wx.Size(500,500)) Okno(parent) parent.Show() okno.MainLoop()
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)





Linear Mode