我有代码正在将文件拖放到框架内的wx.FileDropTarget中。那不是我的问题。
我正在尝试制作一个自定义的“悬停”事件,在外部拖动的文件在我的框架上后被调用1秒。不幸的是,当从外部将外部文件拖到框架上时,不会调用wx.EVT_ENTER_WINDOW。
我想避免持续的光标检查和碰撞检测,因为我的应用程序更像是一个实用工具。 (我将使用我的应用程序使用小屏幕空间并在“悬停”在一个小框架上1秒后展开)
理想情况下,我想将代码(我的1秒计时器)添加到当我的应用程序点击时将光标从“文件”更改为“移动”光标的事件。
我正在学习wx,远离vb.NET。在vb.NET中有一个“Control.DragEnter”的事件处理程序。这就是我真正想要的。 wxpython等同于vb.NET“Control.DragEnter”
Private Sub _DragEnter(sender As Object, e As DragEventArgs) Handles Me.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Move
End If
tmrHover = New Timer
AddHandler tmrHover.Tick, AddressOf tmrHover_Tick
tmrHover.Interval = 1000
tmrHover.Start()
End Sub
提前致谢。
-Alex
答案 0 :(得分:0)
我找到了解决方案。我第一次看文档的时候还不清楚,但是在这里它适用于其他所有人:
class MyFileDropTarget(wx.FileDropTarget):
def __init__(self, mainFrame):
wx.FileDropTarget.__init__(self)
self.window = mainFrame
def OnDropFiles(self, x, y, filenames):
for fil in filenames:
print str(fil)
def OnEnter(self, x, y, nul):
self.window.OnDragEnter()
return wx.DragMove
def OnLeave(self):
self.window.OnDragLeave()
return
def OnDragOver(self, x, y, nul):
return wx.DragMove
感谢。
-Alex