2012-07-05 64 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

相關問題