问个有关 event.Skip() 的菜问题

问个有关 event.Skip() 的菜问题

最近在学 wxPython,常常在代码中看到 event.Skip() 的使用,比如下面这段代码:

[Copy to clipboard] [ - ]
CODE:
import wx

class DoubleEventFrame(wx.Frame):

    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Frame With Button',
                size=(300, 100))
        self.panel = wx.Panel(self, -1)
        self.button = wx.Button(self.panel, -1, "Click Me", pos=(100, 15))
        self.Bind(wx.EVT_BUTTON, self.OnButtonClick,
            self.button)    #1 绑定按钮敲击事件                           
        self.button.Bind(wx.EVT_LEFT_DOWN, self.OnMouseDown)   #2 绑定鼠标左键按下事件

    def OnButtonClick(self, event):
        self.panel.SetBackgroundColour('Green')
        self.panel.Refresh()

    def OnMouseDown(self, event):
        self.button.SetLabel("Again!")
        event.Skip()   #3 确保继续处理     


if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = DoubleEventFrame(parent=None, id=-1)
    frame.Show()
    app.MainLoop()

其实 event.Skip() 的作用我是理解的,但我有一个不解的地方是:

我觉得 event.Skip() 这样的写法有点奇怪,因为如果是调用 wx.Event 类的 Skip() 函数,那也该写成 wx.Event.Skip() 啊,怎么冒出一个 event 来了,而不是大写的 Event?
还有下面这个:

[Copy to clipboard] [ - ]
CODE:
import wx
class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300))
        panel = wx.Panel(self, -1)
        panel.Bind(wx.EVT_MOTION,  self.OnMove)
        wx.StaticText(panel, -1, "Pos:", pos=(10, 12))
        self.posCtrl = wx.TextCtrl(panel, -1, "", pos=(40, 10))

    def OnMove(self, event):
        pos = event.GetPosition()
        self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = MyFrame()
    frame.Show(True)
    app.MainLoop()

event.GetPosition()

这个 event 怎么就能够直接使用呢?
汗一下先。那个 event 不是函数的参数么?只要你喜欢,管它叫啥都行。
举个例子

[Copy to clipboard] [ - ]
CODE:
def f(x):
    print x.upper()
   

f("hello")



QUOTE:
HELLO

你说为啥 x 就能直接用呢? 居然还有个方法叫 upper?
哈哈, 谢谢 retuor。我眼睛真是直的,都没看到函数参数里头有个 event 这玩意。