2010-03-13 27 views
2

我有3个面板,我想对他们做拖拽。 问题是,当我做一个拖动发生这种情况: http://img41.yfrog.com/img41/9043/soundlog.png http://img41.yfrog.com/img41/9043/soundlog.png如何在拖动面板时清除wxpython帧内容?

如何刷新帧颜色当面板不再存在?

这是我必须做的拖码:

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) 

有了这个,如果我点击的顶部面板,并向下或向上移动,面板位置改变(我拖动面板)到鼠标的位置。

+0

你是什么意思“使他们拖沓”?你可以把一些自包含的示例代码,这表明问题? – 2010-03-13 10:10:37

+0

我把代码,你现在明白吗? – 2010-03-13 10:26:16

+0

你可以把一些代码,我可以运行没有复制粘贴,所以我可以看到问题的第一手,并修复它。 – 2010-03-17 16:10:51

回答

1

要刷新的self每一个重新定位的父母,你可以

self.parent.Refresh() 

def onMouseMove方法您现有的呼叫self.SetPosition之后添加。现在,只有在def onDraggingDown方法中刷新框架,即第一次单击并按住鼠标左键时,并非每次在按住所述按键的同时移动鼠标(即“拖动”动作本身)。

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

+0

我已经allready测试self.parent.Refresh()之前,我提出了这个问题:( – 2010-03-23 09:54:06