您的位置:首页 > 编程语言 > Python开发

wxPython之响应事件

2008-06-25 19:55 405 查看
wxPython的處理可以通過Bind函數或EventManager模塊進行管理。它們的使用方法都很簡單。

Bind(事件,響應函數)
這樣就可以將相應的事件綁定到響應函數。
如:
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus)
self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouse)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
self.Bind(wx.EVT_KEY_UP, self.OnKeyUp)
self.Bind(wx.EVT_CHAR, self.OnChar)

在綁定後,應要定義相應的函數。
如下面定義一個響應按鍵彈起的事件函數,對應於self.Bind(wx.EVT_KEY_UP, self.OnKeyUp):

def OnKeyUp(self, evt):
if self.logKeyUp:
self.GetParent().keylog.LogKeyEvent("KeyUp", evt)
if self.callSkip:
evt.Skip()

Bind還有第三個參數的,先看下面二個句子。

self.text.Bind(wx.EVT_KEY_UP,self.OnKeyUp)

self.Bind(wx.EVT_KEY_UP,self.OnKeyUp,self.text)
它是為某一控件指定事件處理函數。不過,這兩種方法的使用是有差別的,但在這裡我不詳細說明了。感興趣的話可以到下面的鏈接看下。
http://wiki.wxpython.org/self.Bind_vs._self.button.Bind

EventManager模塊

簡單的說下EventManager模塊的使用,我沒有測試它的用法,主要是參考wxPython的演示文檔作說明。
EventManager在說明文檔中,提到它不會影響到程序的性能,我只有一個疑問用Bind是否會影響到程序的性能?
import wx.lib.evtmgr as em
em.eventManager.Register(self.doLayout, wx.EVT_SIZE, self)
同樣是需要將事件和函數綁定,第三個是綁定的控件。

下面是wxPython已定義的事件。

'EVT_ACTIVATE', 'EVT_ACTIVATE_APP', 'EVT_BUTTON', 'EVT_CALCULATE_LAYOUT', 'EVT_CHAR', 'EVT_CHAR_HOOK', 'EVT_CHECKBOX', 'EVT_CHECKLISTBOX', 'EVT_CHILD_FOCUS', 'EVT_CHOICE', 'EVT_CHOICEBOOK_PAGE_CHANGED', 'EVT_CHOICEBOOK_PAGE_CHANGING', 'EVT_CLOSE', 'EVT_COLLAPSIBLEPANE_CHANGED', 'EVT_COLOURPICKER_CHANGED', 'EVT_COMBOBOX', 'EVT_COMMAND', 'EVT_COMMAND_ENTER', 'EVT_COMMAND_FIND', 'EVT_COMMAND_FIND_CLOSE', 'EVT_COMMAND_FIND_NEXT', 'EVT_COMMAND_FIND_REPLACE', 'EVT_COMMAND_FIND_REPLACE_ALL', 'EVT_COMMAND_KILL_FOCUS', 'EVT_COMMAND_LEFT_CLICK', 'EVT_COMMAND_LEFT_DCLICK', 'EVT_COMMAND_RANGE', 'EVT_COMMAND_RIGHT_CLICK', 'EVT_COMMAND_RIGHT_DCLICK', 'EVT_COMMAND_SCROLL', 'EVT_COMMAND_SCROLL_BOTTOM', 'EVT_COMMAND_SCROLL_CHANGED', 'EVT_COMMAND_SCROLL_ENDSCROLL', 'EVT_COMMAND_SCROLL_LINEDOWN', 'EVT_COMMAND_SCROLL_LINEUP', 'EVT_COMMAND_SCROLL_PAGEDOWN', 'EVT_COMMAND_SCROLL_PAGEUP', 'EVT_COMMAND_SCROLL_THUMBRELEASE', 'EVT_COMMAND_SCROLL_THUMBTRACK', 'EVT_COMMAND_SCROLL_TOP', 'EVT_COMMAND_SET_FOCUS', 'EVT_CONTEXT_MENU', 'EVT_DATE_CHANGED', 'EVT_DETAILED_HELP', 'EVT_DETAILED_HELP_RANGE', 'EVT_DIRPICKER_CHANGED', 'EVT_DISPLAY_CHANGED', 'EVT_DROP_FILES', 'EVT_END_PROCESS', 'EVT_END_SESSION', 'EVT_ENTER_WINDOW', 'EVT_ERASE_BACKGROUND', 'EVT_FILEPICKER_CHANGED', 'EVT_FIND', 'EVT_FIND_CLOSE', 'EVT_FIND_NEXT', 'EVT_FIND_REPLACE', 'EVT_FIND_REPLACE_ALL', 'EVT_FONTPICKER_CHANGED', 'EVT_HELP', 'EVT_HELP_RANGE', 'EVT_HIBERNATE', 'EVT_HOTKEY', 'EVT_HYPERLINK', 'EVT_ICONIZE', 'EVT_IDLE', 'EVT_INIT_DIALOG', 'EVT_JOYSTICK_EVENTS', 'EVT_JOY_BUTTON_DOWN', 'EVT_JOY_BUTTON_UP', 'EVT_JOY_MOVE', 'EVT_JOY_ZMOVE', 'EVT_KEY_DOWN', 'EVT_KEY_UP', 'EVT_KILL_FOCUS', 'EVT_LEAVE_WINDOW', 'EVT_LEFT_DCLICK', 'EVT_LEFT_DOWN', 'EVT_LEFT_UP', 'EVT_LISTBOOK_PAGE_CHANGED', 'EVT_LISTBOOK_PAGE_CHANGING', 'EVT_LISTBOX', 'EVT_LISTBOX_DCLICK', 'EVT_LIST_BEGIN_DRAG', 'EVT_LIST_BEGIN_LABEL_EDIT', 'EVT_LIST_BEGIN_RDRAG', 'EVT_LIST_CACHE_HINT', 'EVT_LIST_COL_BEGIN_DRAG', 'EVT_LIST_COL_CLICK', 'EVT_LIST_COL_DRAGGING', 'EVT_LIST_COL_END_DRAG', 'EVT_LIST_COL_RIGHT_CLICK', 'EVT_LIST_DELETE_ALL_ITEMS', 'EVT_LIST_DELETE_ITEM', 'EVT_LIST_END_LABEL_EDIT', 'EVT_LIST_INSERT_ITEM', 'EVT_LIST_ITEM_ACTIVATED', 'EVT_LIST_ITEM_DESELECTED', 'EVT_LIST_ITEM_FOCUSED', 'EVT_LIST_ITEM_MIDDLE_CLICK', 'EVT_LIST_ITEM_RIGHT_CLICK', 'EVT_LIST_ITEM_SELECTED', 'EVT_LIST_KEY_DOWN', 'EVT_MAXIMIZE', 'EVT_MENU', 'EVT_MENU_CLOSE', 'EVT_MENU_HIGHLIGHT', 'EVT_MENU_HIGHLIGHT_ALL', 'EVT_MENU_OPEN', 'EVT_MENU_RANGE', 'EVT_MIDDLE_DCLICK', 'EVT_MIDDLE_DOWN', 'EVT_MIDDLE_UP', 'EVT_MOTION', 'EVT_MOUSEWHEEL', 'EVT_MOUSE_CAPTURE_CHANGED', 'EVT_MOUSE_CAPTURE_LOST', 'EVT_MOUSE_EVENTS', 'EVT_MOVE', 'EVT_MOVING', 'EVT_NAVIGATION_KEY', 'EVT_NC_PAINT', 'EVT_NOTEBOOK_PAGE_CHANGED', 'EVT_NOTEBOOK_PAGE_CHANGING', 'EVT_PAINT', 'EVT_PALETTE_CHANGED', 'EVT_POWER_RESUME', 'EVT_POWER_SUSPENDED', 'EVT_POWER_SUSPENDING', 'EVT_POWER_SUSPEND_CANCEL', 'EVT_QUERY_END_SESSION', 'EVT_QUERY_LAYOUT_INFO', 'EVT_QUERY_NEW_PALETTE', 'EVT_RADIOBOX', 'EVT_RADIOBUTTON', 'EVT_RIGHT_DCLICK', 'EVT_RIGHT_DOWN', 'EVT_RIGHT_UP', 'EVT_SASH_DRAGGED', 'EVT_SASH_DRAGGED_RANGE', 'EVT_SCROLL', 'EVT_SCROLLBAR', 'EVT_SCROLLWIN', 'EVT_SCROLLWIN_BOTTOM', 'EVT_SCROLLWIN_LINEDOWN', 'EVT_SCROLLWIN_LINEUP', 'EVT_SCROLLWIN_PAGEDOWN', 'EVT_SCROLLWIN_PAGEUP', 'EVT_SCROLLWIN_THUMBRELEASE', 'EVT_SCROLLWIN_THUMBTRACK', 'EVT_SCROLLWIN_TOP', 'EVT_SCROLL_BOTTOM', 'EVT_SCROLL_CHANGED', 'EVT_SCROLL_ENDSCROLL', 'EVT_SCROLL_LINEDOWN', 'EVT_SCROLL_LINEUP', 'EVT_SCROLL_PAGEDOWN', 'EVT_SCROLL_PAGEUP', 'EVT_SCROLL_THUMBRELEASE', 'EVT_SCROLL_THUMBTRACK', 'EVT_SCROLL_TOP', 'EVT_SEARCHCTRL_CANCEL_BTN', 'EVT_SEARCHCTRL_SEARCH_BTN', 'EVT_SET_CURSOR', 'EVT_SET_FOCUS', 'EVT_SHOW', 'EVT_SIZE', 'EVT_SIZING', 'EVT_SLIDER', 'EVT_SPIN', 'EVT_SPINCTRL', 'EVT_SPIN_DOWN', 'EVT_SPIN_UP', 'EVT_SPLITTER_DCLICK', 'EVT_SPLITTER_DOUBLECLICKED', 'EVT_SPLITTER_SASH_POS_CHANGED', 'EVT_SPLITTER_SASH_POS_CHANGING', 'EVT_SPLITTER_UNSPLIT', 'EVT_SYS_COLOUR_CHANGED', 'EVT_TASKBAR_CLICK', 'EVT_TASKBAR_LEFT_DCLICK', 'EVT_TASKBAR_LEFT_DOWN', 'EVT_TASKBAR_LEFT_UP', 'EVT_TASKBAR_MOVE', 'EVT_TASKBAR_RIGHT_DCLICK', 'EVT_TASKBAR_RIGHT_DOWN', 'EVT_TASKBAR_RIGHT_UP', 'EVT_TEXT', 'EVT_TEXT_COPY', 'EVT_TEXT_CUT', 'EVT_TEXT_ENTER', 'EVT_TEXT_MAXLEN', 'EVT_TEXT_PASTE', 'EVT_TEXT_URL', 'EVT_TIMER', 'EVT_TOGGLEBUTTON', 'EVT_TOOL', 'EVT_TOOLBOOK_PAGE_CHANGED', 'EVT_TOOLBOOK_PAGE_CHANGING', 'EVT_TOOL_ENTER', 'EVT_TOOL_RANGE', 'EVT_TOOL_RCLICKED', 'EVT_TOOL_RCLICKED_RANGE', 'EVT_TREEBOOK_NODE_COLLAPSED', 'EVT_TREEBOOK_NODE_EXPANDED', 'EVT_TREEBOOK_PAGE_CHANGED', 'EVT_TREEBOOK_PAGE_CHANGING', 'EVT_TREE_BEGIN_DRAG', 'EVT_TREE_BEGIN_LABEL_EDIT', 'EVT_TREE_BEGIN_RDRAG', 'EVT_TREE_DELETE_ITEM', 'EVT_TREE_END_DRAG', 'EVT_TREE_END_LABEL_EDIT', 'EVT_TREE_GET_INFO', 'EVT_TREE_ITEM_ACTIVATED', 'EVT_TREE_ITEM_COLLAPSED', 'EVT_TREE_ITEM_COLLAPSING', 'EVT_TREE_ITEM_EXPANDED', 'EVT_TREE_ITEM_EXPANDING', 'EVT_TREE_ITEM_GETTOOLTIP', 'EVT_TREE_ITEM_MENU', 'EVT_TREE_ITEM_MIDDLE_CLICK', 'EVT_TREE_ITEM_RIGHT_CLICK', 'EVT_TREE_KEY_DOWN', 'EVT_TREE_SEL_CHANGED', 'EVT_TREE_SEL_CHANGING', 'EVT_TREE_SET_INFO', 'EVT_TREE_STATE_IMAGE_CLICK', 'EVT_UPDATE_UI', 'EVT_UPDATE_UI_RANGE', 'EVT_VLBOX', 'EVT_WINDOW_CREATE', 'EVT_WINDOW_DESTROY'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: