我想从动态创建的按钮(其中14个)
向函数发送变量# creating buttons
for i in range(0, 14):
m_pauser.append(wx.Button(panel, 5, "Pause "+str(i)))
m_pauser[i].Bind(wx.EVT_BUTTON, lambda event: self.dispenser_pause(event, i), m_pauser[i])
box.Add(m_pauser[i], 0, wx.ALL, 10)
# function called by buttons
def dispenser_pause(self, event, my_value):
print my_value
问题是所有按钮总是发送13('for'循环中'i'的最后一个值)
如何为按钮分配值,以便将其发送给函数?这是使它运作的正确方法吗?
我刚开始使用Python,所以可能有很多我错过了
由于
答案 0 :(得分:2)
我认为问题是每个按钮都会获得相同的ID,在您的示例中似乎是5
。硬编码wxwidgets ID是一个坏习惯。请改用-1
或wx.NewId()
。
编辑:这不是ID(但ID应该是唯一的,无论如何)。原因是i
确实指向了它的最后一个值(在循环期间,i
总是"同样的事情"并且永远不会" distinct {{ 1}}' S)。请改为:
为了清楚起见,可以执行以下操作:
i
在the wxPython wiki中解释的原因比我能做的更好。