Я столкнулся с аналогичной проблемой: я генерировал кнопки на основе предоставленных пользователем данных, и мне нужно было, чтобы кнопки влияли на другой класс, поэтому мне нужно было передать информацию о нажатии кнопки. Я явно назначил идентификаторы кнопок каждой сгенерированной кнопке, а затем сохранил информацию о них в словаре для последующего поиска.
Я бы подумал, что был бы более красивый способ сделать это, создав пользовательское событие, передающее больше информации, но все, что я видел, это метод поиска по словарю. Кроме того, я держу список кнопок, чтобы при необходимости все их можно было стереть.
Вот пример слегка вычищенного кода:
self.buttonDefs = {}
self.buttons = []
id_increment = 800
if (row, col) in self.items:
for ev in self.items[(row, col)]:
id_increment += 1
#### Populate a dict with the event information
self.buttonDefs[id_increment ] = (row, col, ev['user'])
####
tempBtn = wx.Button(self.sidebar, id_increment , "Choose",
(0,50+len(self.buttons)*40), (50,20) )
self.sidebar.Bind(wx.EVT_BUTTON, self.OnShiftClick, tempBtn)
self.buttons.append(tempBtn)
def OnShiftClick(self, evt):
### Lookup the information from the dict
row, col, user = self.buttonDefs[evt.GetId()]
self.WriteToCell(row, col, user)
self.DrawShiftPicker(row, col)