读书人

python中的拖动流

发布时间: 2012-11-09 10:18:47 作者: rapoo

python中的拖动源

#coding=utf-8import wxclass DragController(wx.Control):   """Just a little control to handle dragging the text from a textcontrol.  We use a separate control so as to not interfere withthe native drag-select functionality of the native text control."""   def __init__(self, parent, source, size=(25,25)):wx.Control.__init__(self, parent, -1, size=size,style=wx.SIMPLE_BORDER)self.source = sourceself.SetMinSize(size)self.Bind(wx.EVT_PAINT, self.OnPaint)self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)def OnPaint(self, evt):# draw a simple arrowdc = wx.BufferedPaintDC(self)dc.SetBackground(wx.Brush(self.GetBackgroundColour()))dc.Clear()w, h = dc.GetSize()y = h/2dc.SetPen(wx.Pen("dark blue",2))dc.DrawLine(w/8,y,w-w/8,y)def OnLeftDown(self,evt):text=self.source.GetValue()data=wx.TextDataObject(text)dropSource=wx.DropSource(self)#创建释放源dropSource.SetData(data)#设置数据result=dropSource.DoDragDrop(wx.Drag_AllowMove)#执行释放#iftheuserwantstomovethedatathenweshoulddeleteit#fromthesourceif result== wx.DragMove:self.source.SetValue("")#如果需要的话,删除源中的数据class MyFrame(wx.Frame):def __init__(self):wx.Frame.__init__(self,None,title="DropSource")self.SetSize((400,400))p=wx.Panel(self)#createthecontrolslabel1=wx.StaticText(p,-1,"Put some text in this control:",size=(200,100))label2=wx.StaticText(p,-1,"Then drag from the neighboring bitmap and\n""drop in an application that accepts dropped\n""text,such as MSWord.",size=(200,100))text=wx.TextCtrl(p,-1,"Sometext")dragctl=DragController(p,text)#setupthelayoutwithsizerssizer=wx.BoxSizer(wx.VERTICAL)sizer.Add(label1,0,wx.ALL,5)hrow=wx.BoxSizer(wx.HORIZONTAL)hrow.Add(text,1,wx.RIGHT,5)hrow.Add(dragctl,0)sizer.Add(hrow,0,wx.EXPAND|wx.ALL,5)p.SetSizer(sizer)sizer.Fit(self)app=wx.PySimpleApp()frm=MyFrame()frm.Show()app.MainLoop()

读书人网 >perl python

热点推荐