#coding: utf-8


objectList=['せり','なずな','ごぎょう','はこべら','ほとけのざ',
            'すずな','すずしろ','はぎ','おばな','くず','なでしこ',
            'おみなえし','ふじばかま','あさがお']


import wx

class MyTarget(wx.TextDropTarget): 
   def __init__(self, object): 
      wx.TextDropTarget.__init__(self) 
      self.object = object  
		
   def OnDropText(self, x, y, data): 
      self.object.InsertItem(0, data)
      return True
   #Dropされる側のListCtrlの登録と
   #Dropされたときの処理
    

class Example(wx.Frame):

    def __init__(self, *args, **kw):
        super(Example, self).__init__(*args, **kw)

        self.SetTitle('DragDrop: from Wild to My garden')

        self.InitUI()

    def InitUI(self):
       sp = wx.SplitterWindow(self, style=wx.SP_3D)
       p1 = wx.Panel(sp, style=wx.SUNKEN_BORDER)
       p2 = wx.Panel(sp, style=wx.SUNKEN_BORDER)
       sp.SplitVertically(p1, p2, sashPosition=200)  # ウィンドウを左右に分割
       vbox1=wx.BoxSizer(wx.VERTICAL)
       st1 = wx.StaticText(p1, label="WILD GARDEN")
       self.lst1= wx.ListCtrl(p1, -1,size=(100,200),style=wx.LC_LIST)
       for flower in objectList:
          self.lst1.InsertItem(0, flower)
          #flowers i wild garden
       vbox1.Add(st1, 0, wx.LEFT, 20)
       vbox1.Add(self.lst1, 0, flag=wx.EXPAND | wx.ALL, border=10)
       p1.SetSizer(vbox1)
       #左パネルの表示

       vbox2=wx.BoxSizer(wx.VERTICAL)
       st2 = wx.StaticText(p2, label="MY GARDEN")
       self.lst2= wx.ListCtrl(p2, -1, size=(100,200), style=wx.LC_LIST)
       vbox2.Add(st2, 0, wx.LEFT, 20)
       vbox2.Add(self.lst2, 0, flag=wx.EXPAND | wx.ALL, border=10)
       p2.SetSizer(vbox2)
       #右パネルの表示

       dt = MyTarget(self.lst2)
       self.lst2.SetDropTarget(dt)
       self.lst1.Bind(wx.EVT_LIST_BEGIN_DRAG, self.OnDragInit)
       #このイヴェントはListCtrlに固有なイヴェントである
        
    def OnDragInit(self, event):
       text = self.lst1.GetItemText(event.GetIndex())
       tobj = wx.TextDataObject(text)
       src = wx.DropSource(self.lst1)
       src.SetData(tobj)
       src.DoDragDrop(True)
       #Dragを始める側のListCtrlとDragするitemの設定
       #self.lst1.DeleteItem(event.GetIndex()) 
		
        

def main():

    app = wx.App()
    ex = Example(None)
    ex.Show()
    app.MainLoop()


if __name__ == '__main__':
    main()

	実行例