Форум сайта python.su
Здравствуйте.
Генерирую группу радио кнопок на основе списка.
Список представляет из себя:
self.data['formats'] = [...,
...,
{"angle": False,
"category": "pass",
"copys": 4,
"gray_frame": False,
"width": 37,
"height": 47,
"faceheight": 12,
"name": "Паспорт РФ",
"onlyface": True,
"oval": False,
"overheadheight": 5,
"paper": "10x15",
"print_photo": False,
"to_grayscale": False},
...,
...]
# Формируем "список форматов"
# self.data - это свойство класа id_photo_base
group = None
for format in self.data['formats']:
self.format_radio = gtk.RadioButton(group, format['name'])
self.format_radio.show()
group = self.format_radio
self.format_radio.hide()
Офлайн
У вас таким образом self.format_radio перезаписывается каждую итерацию цикла. Необходимо каждой кнопке дать уникальное название. Например, добавьте в self.data ещё один пункт - id (1, 2, 3, 4, 5 и т.д.). И в цикле создавайте кнопку следующим образом -
self.format_radio[format['id']] = gtk.RadioButton(group, format['name'])
Офлайн
Идея хороша и проста, как всё гениальное.
Я поначалу (когда впервые изобретал этот цикл), что бы переменная self.format_radio не перезаписывалась каждую итерацию цикла пытался генерировать её налету, но выходили лишь костыли и, в результате, решил всё оставить так как есть. Идея использовать список мне даже не приходила в голову. Кстати предоженый вами код будет работать только если сгенерировать список self.format_radio (а теперь это будет список) заранее.
Вот набросал за пару минут не оптимизированный, но рабочий код:
group = None
self.format_radio = [x for x in range(len(self.data['formats']))]
id = 0
for format in self.data['formats']:
self.format_radio[id] = gtk.RadioButton(group, format['name'])
self.format_radio[id].show()
group = self.format_radio[id]
id += 1
self.format_radio[0].hide()
self.format_radio[3].hide()
self.format_radio[4].hide()
self.format_radio[5].hide()
self.format_radio[6].hide()
self.format_radio[-1].hide()
self.format_radio[-2].hide()
self.format_radio[-3].hide()
Офлайн