def BindEvents(self):
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None)
self.Bind(wx.EVT_RIGHT_DOWN, self.OnButtonDown)
self.Bind(wx.EVT_LEFT_DOWN, self.OnButtonDown)
self.Bind(wx.EVT_MIDDLE_DOWN, self.OnButtonDown)
self.Bind(wx.EVT_RIGHT_UP, self.OnButtonUp)
self.Bind(wx.EVT_LEFT_UP, self.OnButtonUp)
self.Bind(wx.EVT_MIDDLE_UP, self.OnButtonUp)
self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
self.Bind(wx.EVT_MOTION, self.OnMotion)
self.Bind(wx.EVT_ENTER_WINDOW, self.OnEnter)
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeave)
self.Bind(wx.EVT_CHAR, self.OnKeyDown)
self.Bind(wx.EVT_KEY_UP, self.OnKeyUp)
if wx.Platform == "__WXGTK__":
# wxGTK requires that the window be created before you can
# set its shape, so delay the call to SetWindowShape until
# this event.
self.Bind(wx.EVT_WINDOW_CREATE, self.OnWindowCreate)
else:
# On wxMSW and wxMac the window has already been created.
self.Bind(wx.EVT_SIZE, self.OnSize)
if _useCapture and hasattr(wx, 'EVT_MOUSE_CAPTURE_LOST'):
self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self.OnMouseCaptureLost)
python类EVT_MOUSEWHEEL的实例源码
def __init__(self, parent, manager=None):
attribList = attribs = (glcanvas.WX_GL_RGBA, glcanvas.WX_GL_DOUBLEBUFFER, glcanvas.WX_GL_DEPTH_SIZE, 24)
glcanvas.GLCanvas.__init__(self, parent, -1, attribList=attribList)
self.init = False
self.context = glcanvas.GLContext(self)
self.manager = self.manager = Manager() if manager is None else manager
self.size = None
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseDown)
self.Bind(wx.EVT_LEFT_UP, self.OnMouseUp)
self.Bind(wx.EVT_MOTION, self.OnMouseMotion)
self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
self.lastx, self.lasty = None, None
self.update = True
#print('init===========')
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.NO_BORDER):
wx.Panel.__init__(self, parent, id=id, pos=pos, size=size, style=style)
self.Viewport = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.NO_BORDER)
self.Scrollbar = wx.ScrollBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SB_VERTICAL)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.Viewport, 1, wx.EXPAND, 0)
sizer.Add(self.Scrollbar, 0, wx.EXPAND, 0)
self.SetSizer(sizer)
self.Layout()
sizer.Fit(self)
self._presenter = Presenter.from_window(self.Viewport.GetHandle(), config.SCALE)
self._graphics = None
self._font = None
self._entities = None
self._selected_index = -1
self.Viewport.Bind(wx.EVT_PAINT, self.paint)
self.Viewport.Bind(wx.EVT_SIZE, self.resize)
self.Viewport.Bind(wx.EVT_MOUSEWHEEL, self.mouse_wheel)
self.Viewport.Bind(wx.EVT_LEFT_DOWN, self.mouse_left_down)
self.Scrollbar.Bind(wx.EVT_SCROLL, self.scroll)
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.NO_BORDER):
wx.Panel.__init__(self, parent, id=id, pos=pos, size=size, style=style)
self.Viewport = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.NO_BORDER)
self.Scrollbar = wx.ScrollBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SB_VERTICAL)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.Viewport, 1, wx.EXPAND, 0)
sizer.Add(self.Scrollbar, 0, wx.EXPAND, 0)
self.SetSizer(sizer)
self.Layout()
sizer.Fit(self)
self.Scrollbar.SetScrollbar(0, 0, 0, 0)
self._presenter = Presenter.from_window(self.Viewport.GetHandle(), config.SCALE)
self._camera = Camera(0, 0, 0, 0)
self._tilemap = None
self._tileset = None
self._select_start = None
self._select_end = None
self._show_collision = False
self.Viewport.Bind(wx.EVT_PAINT, self.paint)
self.Viewport.Bind(wx.EVT_SIZE, self.resize)
self.Viewport.Bind(wx.EVT_MOUSEWHEEL, self.mouse_wheel)
self.Viewport.Bind(wx.EVT_LEFT_DOWN, self.mouse_left_down)
self.Viewport.Bind(wx.EVT_LEFT_UP, self.mouse_left_up)
self.Viewport.Bind(wx.EVT_MOTION, self.mouse_move)
self.Scrollbar.Bind(wx.EVT_SCROLL, self.scroll)
def SetScale(self, scale_number, refresh=True, mouse_event=None):
new_scale = max(0, min(scale_number, len(ZOOM_FACTORS) - 1))
if self.CurrentScale != new_scale:
if refresh:
dc = self.GetLogicalDC()
self.CurrentScale = new_scale
self.ViewScale = (ZOOM_FACTORS[self.CurrentScale], ZOOM_FACTORS[self.CurrentScale])
if refresh:
self.Editor.Freeze()
if mouse_event is None:
client_size = self.Editor.GetClientSize()
mouse_pos = wx.Point(client_size[0] / 2, client_size[1] / 2)
mouse_event = wx.MouseEvent(wx.EVT_MOUSEWHEEL.typeId)
mouse_event.x = mouse_pos.x
mouse_event.y = mouse_pos.y
else:
mouse_pos = mouse_event.GetPosition()
pos = mouse_event.GetLogicalPosition(dc)
xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL)
ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL)
scrollx = max(0, round(pos.x * self.ViewScale[0] - mouse_pos.x) / SCROLLBAR_UNIT)
scrolly = max(0, round(pos.y * self.ViewScale[1] - mouse_pos.y) / SCROLLBAR_UNIT)
if scrollx > xmax or scrolly > ymax:
self.RefreshScrollBars(max(0, scrollx - xmax), max(0, scrolly - ymax))
self.Scroll(scrollx, scrolly)
else:
self.Scroll(scrollx, scrolly)
self.RefreshScrollBars()
self.RefreshScaling(refresh)
self.Editor.Thaw()