如何實現wxPython下的檔案拖放

       對於使用者而言,這樣的操作方式才是最直覺的UI介面。我們在在wxPython下面支援將檔案由程式外部拖放到程式中,需要費很多的功夫嗎?一點也不,其實非常簡單: 首先你先要繼承wxFileDropTarget這個類別。請看下面這個例子:

class FileDropTarget(wxFileDropTarget):
    def __init__(self, window):
        wxFileDropTarget.__init__(self)
        self.window = window

    def OnDropFiles(self, x, y, filenames):
        self.window.SetValue(str(filenames))

         首先,我們看看在__init__()中作了什麼?在這個method中,我們引入了一個參數window,透過這個window參數所傳入的是一個視窗物件,先將這個視窗物件記錄在我們自己所繼承的物件中。到目前為止都還看不出有什麼作用。不過,真正的工作是在OnDropFiles的event handler中。在這個event handler中,除了self參數外,另外還有三個參數,分別為x, y以及filenames。其中,x, y是當滑鼠放掉時游標所在的位置。而filenames是一個tuple。裡面記載了被拖拉進來的檔案名稱列表。在這個範例中,我們僅是簡單的將取得的檔案列表寫入指定視窗的中。假設我們有個wxTextCtrl物件名為TextBox。要讓這個物件能夠接受檔案,要用下面程式既可以了:
dropTarget = FileDropTarget(TextBox)
在in action 里有具体示例。
TextBox.SetDropTarget(dragTarget)

你可能感兴趣的:(如何實現wxPython下的檔案拖放)