1

フレーム内のwx.FileDropTargetにファイルをドロップするように動作するコードがあります。それは私の質問ではありません。

外部のドラッグされたファイルがフレーム上にある1秒後に呼び出されるカスタムの「ホバー」イベントを作成しようとしています。残念ながら、外部ファイルが外部からフレームにドラッグされている場合、wx.EVT_ENTER_WINDOWは呼び出されません。

私のアプリはよりユーティリティであるため、カーソルのチェックと衝突検出を常に避けたいと思います。(アプリで小さな画面領域を使用し、小さなフレームに1秒間「ホバー」した後、拡張します)

理想的には、カーソルがアプリにヒットしたときにカーソルを「ファイル」から「移動」カーソルに変更するイベントにコード(1秒タイマー)を追加したいと思います。

私はちょうどwxを学んでいて、vb.NETから離れています。vb.NETには、「Control.DragEnter」のイベントハンドラーがありました。それが私が本当に探しているものです。vb.NET「Control.DragEnter」と同等のwxpython

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

前もって感謝します。

-アレックス

4

1 に答える 1

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

ありがとう。

-アレックス

于 2013-03-27T13:37:48.917 に答える