如何在拖动面板时清除wxpython框架内容?

时间:2010-03-13 09:05:45

标签: python wxpython refresh panel

我有3个面板,我想对它们进行拖动。 问题是,当我对其进行拖动时会发生这种情况: http://img41.yfrog.com/img41/9043/soundlog.png http://img41.yfrog.com/img41/9043/soundlog.png

当面板不再存在时,如何刷新框架以使其颜色发生?

这是我必须进行拖动的代码:

def onMouseMove(self, event):
    (self.pointWidth, self.pointHeight) = event.GetPosition()
    (self.width, self.height) = self.GetSizeTuple()
    if (self.pointWidth>100 and self.pointWidth<(self.width-100) and self.pointHeight < 15) or self.parent.dragging:
        self.SetCursor(wx.StockCursor(wx.CURSOR_SIZING))

        """implement dragging"""
        if not event.Dragging():
            self.w = 0
            self.h = 0
            return
        self.CaptureMouse()
        if self.w == 0 and self.h == 0:
            (self.w, self.h) = event.GetPosition()
        else:
            (posw, posh) = event.GetPosition()
            displacement = self.h - posh
            self.SetPosition( self.GetPosition() - (0, displacement))
    else:
        self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))

def onDraggingDown(self, event):
    if self.pointWidth>100 and self.pointWidth<(self.width-100) and self.pointHeight < 15:
        self.parent.dragging = 1
        self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
        self.SetBackgroundColour('BLUE')
        self.parent.SetTransparent(220)
        self.Refresh()

def onDraggingUp(self, event):
    self.parent.dragging = 0
    self.parent.SetTransparent(255)
    self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))

这是此事件的结合:

self.Bind(wx.EVT_MOTION, self.onMouseMove)
self.Bind(wx.EVT_LEFT_DOWN, self.onDraggingDown)
self.Bind(wx.EVT_LEFT_UP, self.onDraggingUp)

这样,如果我单击面板顶部,然后向下或向上移动,面板位置会改变(我将面板拖动)到鼠标位置。

1 个答案:

答案 0 :(得分:1)

要在每次重新定位self时刷新父级,您可以添加

self.parent.Refresh()

在您self.SetPosition方法中现有的def onMouseMove来电之后。现在你只是在def onDraggingDown方法中刷新帧,即,第一次点击并按住鼠标左键,而不是每次按住所述按钮时鼠标移动(即, “拖动”行动本身。)

我无法下载您的代码用于测试目的,因为您选择将其上传到相当“垃圾邮件特殊”的网站 - 该网站不断用广告轰炸我,没有明确的方式让我进行下载,偶尔抱怨它不支持我的机器(我使用的是Mac和谷歌Chrome,某些地方的网站坚持使用IE或Firefox的Windows ......)等。我相信你可以找到其他网站,更多对于那些试图帮助你的人来说,可以使用那个! - )