由于没有找到类似vb那样,可以直接调用系统函数的方法来实现无标题栏窗体的移动,所以只有采取“土法”移动了。即根据拖动过程中计算鼠标移动位置的差然后相应Move窗体囧rz,记录一下其代码的具体实现,其中panel是覆盖在窗体中的一块面板控件…
... ... #将鼠标左键按下事件与窗体面板控件绑定 self.panel.Bind(wx.EVT_LEFT_DOWN, self.OnPanelLeftDown) #将鼠标移动事件与窗体面板控件绑定 self.panel.Bind(wx.EVT_MOTION, self.OnPanelMotion) #将鼠标左键放开事件与窗体面板控件绑定 self.panel.Bind(wx.EVT_LEFT_UP, self.OnPanelLeftUp) ... ... def OnPanelLeftDown(self, event): #锁定鼠标,禁止其他鼠标响应事件 self.panel.CaptureMouse() #获取鼠标初始位置 mouse=wx.GetMousePosition() #获取窗口初始位置 frame=self.GetPosition() self.delta=wx.Point(mouse.x-frame.x,mouse.y-frame.y) def OnPanelMotion(self, event): #判断鼠标是否左键拖曳 if event.Dragging() and event.LeftIsDowm(): #获取鼠标新位置 mouse=wx.GetMousePosition() #计算鼠标移动位置差值,Move窗体到相应位置 self.Move((mouse.x-self.delta.x,\ mouse.y-self.delta.y)) def OnPanelLeftUp(self, event): #释放鼠标 if self.panel.HasCapture(): self.panel.ReleaseMouse()
发表回复