我正在尝试创建一个拖放系统,用于将对象从一个ObjectListView拉到另一个ObjectListView。我绑定了这个事件:
self.olv["music_dir"].Bind(wx.EVT_LIST_BEGIN_DRAG, self.handler.begin_music_dir_drag)
然后像这样处理它:
def begin_music_dir_drag(self, event):
self.music_dir_dragging = True
self.music_dir_drag_target = event.GetEventObject().GetSelectedObject()
if not self.music_dir_drag_target:
self.music_dir_drag_target = event.GetEventObject().GetSelectedObjects()
然后我抓住了“掉落”:
self.olv["music_playlist"].Bind(wx.EVT_LEFT_UP, self.handler.handle_playlist_stop_drag)
处理它:
def handle_playlist_stop_drag(self, event):
if self.music_dir_dragging:
*** A bunch of irrelevant processing ***
self.gui_obj.frame.olv["music_playlist"].AddObjects(new_model_objs)
self.music_dir_dragging = False
self.music_dir_drag_target = None
所以,这似乎有效 - 大多数时候。有时它可以通过快速鼠标移动快速工作。其他时候它只有在我减速并有意识地点击和移动时才有效。其他时候它连续多次都不会起作用。我无法弄清楚为什么。有什么想法吗?