0

我正在尝试创建一个拖放系统,用于将对象从一个 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

所以,这似乎有效——大多数时候。有时它可以通过快速的鼠标移动快速运行。其他时候它只在我放慢速度并故意点击和移动时才有效。其他时候它不会连续多次工作。我不知道为什么。有什么想法吗?

4

0 回答 0