【问题标题】:How to tell which FloatSpin is firing the EVT_FLOATSPIN event in wxPython?如何判断哪个 FloatSpin 在 wxPython 中触发了 EVT_FLOATSPIN 事件?
【发布时间】:2012-07-05 16:32:16
【问题描述】:

我想捕获由我的 floatspinner 触发的 FLOATSPIN 事件,但我需要知道哪个 FloatSpin 控件触发了此事件。这是必需的,以便我可以更新字典的值。

FloatSpin 控件是根据键值对字典创建的。键是我的 FloatSpin 控件的唯一 ID,值是控件的默认值。我想更新我的字典 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()

【问题讨论】:

    标签: event-handling wxpython


    【解决方案1】:

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

    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
    

    【讨论】:

    • 如果你给他们唯一的“名称”参数,那么你也可以使用你的floatspin对象来做floatspin.GetName()
    • 我正要添加这个,因为事实证明它更有用!!谢谢迈克,我来这里发布问题后偶然发现了blog.pythonlibrary.org/2011/09/20/…。每个人都应该看看那个链接!
    • 如果我能早点找到你的问题,我会在我自己的解决方案中链接到那篇文章。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2022-10-12
    相关资源
    最近更新 更多