2012-07-05 65 views
1

我想捕获由我的浮动引脚触发的FLOATSPIN事件,但我需要知道哪个FloatSpin控件触发了此事件。这是必需的,以便我可以更新字典的值。如何判断哪个FloatSpin在wxPython中触发EVT_FLOATSPIN事件?

FloatSpin控件已经基于key:value对的字典创建。关键是我的FloatSpin控件的uniqueid,并且该值是控件的默认值。我想更新字典k:v对,并且我正在更新的值将来自FloatSpin控制事件。

鉴于以下(精简)的例子,我将如何捕捉控制触发事件的唯一ID?

firstFS = FS.FloatSpin(self, -1, min_val=0, max_val=None, increment=1, value=1, agwStyle=FS.FS_RIGHT) 
secondFS = FS.FloatSpin(self, -1, min_val=0, max_val=None, increment=1, value=1, agwStyle=FS.FS_RIGHT) 

self.Bind(FS.EVT_FLOATSPIN, self.OnFloatSpin) 

def OnFloatSpin(self, event): 
    floatspin = event.GetEventObject() 

回答

0

花了几个小时试图弄清楚,但我明白了!

firstFS = FS.FloatSpin(self, -1, min_val=0, max_val=None, increment=1, value=1, agwStyle=FS.FS_RIGHT) 
firstFS.SetName('firstFS') # for example 
secondFS = FS.FloatSpin(self, -1, min_val=0, max_val=None, increment=1, value=1, agwStyle=FS.FS_RIGHT) 
secondFS.SetName('secondFS') # for example 

self.Bind(FS.EVT_FLOATSPIN, self.OnFloatSpin) 

def OnFloatSpin(self, event): 
    floatspin = event.GetEventObject() 
    floatspinID = event.GetId() # grab the widgets id that is firing the event 
    '''OR''' 
    floatspinName = event.GetEventObject().GetName() # grab the widget name 
+0

如果你给他们独特的“名”参数,那么你也可以用你的floatspin对象做floatspin.GetName()太 – 2012-07-05 17:33:23

+0

我正要加入这个,因为这已被证明更加有用!感谢迈克,在我来这里发布这个问题后,我偶然发现了http://www.blog.pythonlibrary.org/2011/09/20/wxpython-binding-multiple-widgets-to-the-same-handler/。每个人都应该看看这个链接! – 2012-07-05 17:54:29

+0

如果我早点发现你的问题,我会在我自己的解决方案中链接到那篇文章。 – 2012-07-05 18:31:23

相关问题