Chinaunix首页 | 论坛 | 博客
  • 博客访问: 122366
  • 博文数量: 31
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 435
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-18 15:52
文章分类

全部博文(31)

文章存档

2011年(5)

2010年(4)

2009年(12)

2008年(10)

我的朋友

分类: Python/Ruby

2008-10-24 18:35:53

http://www.dev.idv.tw:8080/mediawiki/index.php/%E5%A6%82%E4%BD%95%E5%AF%A6%E7%8F%BEwxPython%E4%B8%8B%E7%9A%84%E6%AA%94%E6%A1%88%E6%8B%96%E6%94%BE

對於使用者而言,這樣的操作方式才是最直覺的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)

阅读(696) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~