В проекте wxPython у меня есть куча кнопок, которые создаются динамически. Вот минимальный упрощенный пример:Отключить кнопки, созданные динамически на основе их имени в wxPython
data = [{'name':'a', 'n':0}, {'name':'b', 'n':0}, {'name':'c', 'n':0}, {'name':'d', 'n':0}...]
button_names = ['a','b','c','d',...]
button_lab = ['A','B','C','D',...]
N = len(button_names)
g = wx.GridSizer(math.ceil(N/4),4,0,0)
for i in range(0, N-1):
b = wx.Button(self, wx.ID_ANY, name=button_names[i], label=button_lab[i])
b.Bind(wx.EVT_BUTTON, self.OnClick)
g.Add(b, 1, wx_ALL, 5)
С OnClick
функции, такие как это:
def OnClick(self,event):
button = event.GetEventObject()
d = button.GetName()
[k for k in data if k['name']==d][0]['n'] += 1
Затем в функции, связанной с другим виджетом, мне нужно, чтобы иметь возможность отключить некоторые из них на основе некоторых имен, предоставленных пользователем.
Как отключить кнопку, основанную на ее имени, в функции, которая не запускается этой кнопкой?
Почему бы вам не использовать словарь? – falsetru
Можете ли вы уточнить? – plannapus
Я отправил ответ. Проверьте это. – falsetru