Please support our Python advertiser: Programming Forums
Views: 1512 | Replies: 3 | Solved
![]() |
•
•
Join Date: Mar 2006
Posts: 56
Reputation:
Rep Power: 3
Solved Threads: 0
Hi, this is my code:
As you can see, its scrolled canvas and i need to get current coordinates of part of canvas which i can see (sory my english). For exapmle: If i run my code, that left up corner is (0,0) and down right corner is (500,500).
Thanks!
# -*- coding: cp1250 -*-
import wx
class Okno:
def __init__(self,parent=None,id=wx.ID_ANY,title="Graf"):
self.okno=wx.MDIChildFrame(parent,title="Graf",id=-1)
self.okno.Maximize()
self.okno.SetAutoLayout(True)
self.okno.SetBackgroundColour("#FCFCFE")
self.sizer = wx.FlexGridSizer(2,2,0,0)
self.canvas = wx.ScrolledWindow(self.okno, id=wx.ID_ANY)
self.canvas.EnableScrolling(True, True)
self.canvas.SetScrollbars(20, 20, 1000/20, 1000/20)
self.sizer.Add(self.canvas, 1, wx.EXPAND)
self.sizer.AddGrowableRow(0, 1)
self.sizer.AddGrowableCol(0, 1)
self.okno.SetSizer(self.sizer)
self.canvas.Bind(wx.EVT_PAINT, self.OnPaint)
def OnPaint(self, event):
pass
if __name__ == "__main__":
okno = wx.App(0)
parent=wx.MDIParentFrame(None,size=wx.Size(500,500))
o=Okno(parent)
parent.Show()
okno.MainLoop()Thanks!
This will give the mouse position within the whole scrolled canvas ...
python Syntax (Toggle Plain Text)
""" # -*- coding: cp1250 -*- """ # get coordinates of whole scrolled canvas import wx class Okno: def __init__(self,parent=None,id=wx.ID_ANY,title="Graf"): self.okno=wx.MDIChildFrame(parent,title="Graf",id=-1) self.okno.Maximize() self.okno.SetAutoLayout(True) self.okno.SetBackgroundColour("#FCFCFE") self.sizer = wx.FlexGridSizer(2,2,0,0) self.canvas = wx.ScrolledWindow(self.okno, id=wx.ID_ANY) self.canvas.EnableScrolling(True, True) self.canvas.SetScrollbars(20, 20, 1000/20, 1000/20) self.sizer.Add(self.canvas, 1, wx.EXPAND) self.sizer.AddGrowableRow(0, 1) self.sizer.AddGrowableCol(0, 1) self.okno.SetSizer(self.sizer) self.canvas.Bind(wx.EVT_PAINT, self.OnPaint) # hook left mouse button event self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) def OnPaint(self, event): pass def OnLeftDown(self, event): """left mouse button is pressed""" device_pt = event.GetPosition() # tuple (x, y) # need to add current scrollbar value logic_pt to device_pt # if you want position relative to whole canvas logic_pt = self.canvas.CalcUnscrolledPosition(0, 0) #print device_pt, logic_pt adjusted_pt = (device_pt[0]+logic_pt[0], device_pt[1]+logic_pt[1]) self.okno.SetTitle('LeftMouse = ' + str(adjusted_pt)) if __name__ == "__main__": okno = wx.App(0) parent=wx.MDIParentFrame(None,size=wx.Size(500,500)) o=Okno(parent) parent.Show() okno.MainLoop()
Last edited by vegaseat : May 27th, 2007 at 1:45 pm. Reason: spelling
May 'the Google' be with you!
•
•
Join Date: Mar 2006
Posts: 56
Reputation:
Rep Power: 3
Solved Threads: 0
Thanks for fast answer, but i need something else. I dont know how to say it in english, so i painted it:
http://www.blujacker.wz.cz/coords.jpg
http://www.blujacker.wz.cz/coords.jpg
•
•
Join Date: Mar 2006
Posts: 56
Reputation:
Rep Power: 3
Solved Threads: 0
Lol, solved... i am really noob. The solution is:
python Syntax (Toggle Plain Text)
up_left_corner=self.canvas.CalcUnscrolledPosition(0, 0) dow_right_corner=self.canvas.CalcUnscrolledPosition(width_canvas, height_canvas)
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)






Linear Mode