wxPython方法来处理EVT_MOVE事件

时间:2018-06-15 06:16:52

标签: python wxpython

我正在尝试学习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来自何处?这是什么对象?

1 个答案:

答案 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。