xsmile
You can fly higher
xsmile's Blog
wxPython下无标题栏窗体的移动

由于没有找到类似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()
首页      技术      Python      wxPython下无标题栏窗体的移动

发表回复

textsms
account_circle
email

  • emonkey

    你好,我用图片做个复杂的不规则窗口,拖动时会出现很长的尾巴,速度太慢,有没有好办法解决这个问题?

    13 年前 回复

xsmile's Blog

wxPython下无标题栏窗体的移动
由于没有找到类似vb那样,可以直接调用系统函数的方法来实现无标题栏窗体的移动,所以只有采取“土法”移动了。即根据拖动过程中计算鼠标移动位置的差然后相应Move窗体囧rz,记录一下其代码…
扫描二维码继续阅读
2008-11-06