wxpython динамически ссылается на виджеты (wxformbuilder)
Я часто оказываюсь в ситуации, когда я хочу создать ряд wx.StaticText
или какой-то другой виджет в wxFormbuilder и иметь возможность ссылаться на них динамически. Скажем, у меня есть несколько названных statictexts a0
через a10
Как мне найти их в коде?
Одним из способов является создание списка со всеми переменными, но он уродлив и неэффективен? Может быть, нет, но по крайней мере код запутан с длинными списками повсюду.
def updateLabels(self, data):
guiLabels = [self.a0, self.a1, self.a2 ..... ]
for i in range(len(guiLabels)):
guiLabels[i].SetLabel(data[i)
Как вы собираетесь исправить это?
Другой альтернативой является создание списка guiLabels при запуске приложения. Однако у меня были некоторые проблемы с их поиском. Вы должны вызвать GetChildren() в верхнем окне и установить другой wx.ID
для каждого StaticText
а затем просмотрите каждый элемент и найдите этот идентификатор, который вы сделали.. И форматирование, когда я это делаю, действительно не имеет смысла.. Текст получает разные цвета фона и не учитывает его выравнивания и другие интересные вещи.
Есть мысли о том, как я могу это сделать?
1 ответ
Может быть, что-то подобное может работать для вас:
for x in xrange(10):
name = "a%s" % x # dynamically generating reference names
obj = getattr(self, name) # getting the object reference from the parent object
obj.SetLabel("xyz")