我正在尝试创建一个拖放系统,用于将对象从一个 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
所以,这似乎有效——大多数时候。有时它可以通过快速的鼠标移动快速运行。其他时候它只在我放慢速度并故意点击和移动时才有效。其他时候它不会连续多次工作。我不知道为什么。有什么想法吗?