我正在尝试学习wxPython并遇到以下代码(当用户移动窗口时,它会打印出当前窗口位置):
import wx
class Example(wx.Frame):
def __init__(self, *args, **kw):
super(Example, self).__init__(*args, **kw)
self.InitUI()
def InitUI(self):
self.Bind(wx.EVT_MOVE, self.OnMove)
self.SetSize((250, 180))
self.SetTitle('Move event')
self.Centre()
self.Show(True)
def OnMove(self, e):
x, y = e.GetPosition()
print "current window position x = ",x," y= ",y
ex = wx.App()
Example(None)
ex.MainLoop()
我的问题特别是使用OnMove
方法,我知道它用于处理EVT_MOVE
事件,但参数e
来自何处?这是什么对象?
答案 0 :(得分:0)
您绑定的n
,在本例中为event
。
本质上,您使用EVT_MOVE
将Frame(self)的self.Bind(wx.EVT_MOVE, self.OnMove)
事件绑定到函数EVT_MOVE
的执行。结果是每当触发事件,即移动帧时,OnMove
中的代码就会被执行。
请参阅:https://wxpython.org/Phoenix/docs/html/events_overview.html
如果您将代码更改为:
OnMove
会更明显。
绑定(self,event,handler,source = None,id = wx.ID_ANY,id2 = wx.ID_ANY) 将事件绑定到事件处理程序。
参数:
event - EVT_事件绑定程序对象之一 指定要绑定的事件的类型。handler - 一个可调用的对象 事件传递给self时调用。通过无断开连接 事件处理程序。
source - 有时事件来自a 不同的窗口比自己,但你仍然想要自我捕捉它。 (例如,传递给帧的按钮事件。)通过传递 事件的来源,事件处理系统是能够的 区分不同控件的相同事件类型。
ID - 用于按ID而不是实例指定事件源。
id2 - 在需要将处理程序绑定到一系列ID时使用,例如 使用EVT_MENU_RANGE。