Повторители виджетов в gtk3 с использованием python и glade - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь разработать приложения для gtk3, используя python.Я разработал интерфейс с использованием поляны.Я хочу знать, есть ли какой-либо способ использования массивов виджетов, в котором каждый виджет подобного типа будет иметь то же имя, но с другим индексом.Это помогло бы значительно сократить код.

В моем приложении у меня есть 10 виджетов меток, которые отображают разные данные на основе массива данных.Теперь мне нужно вызывать метод gbuilder.get_object() каждый раз, когда мне нужно получить нужный объект.Если бы я мог использовать массивы виджетов, это действительно помогло бы уменьшить избыточность кода.

1 Ответ

1 голос
/ 10 января 2012

Если вы назвали виджеты на поляне, как это:

  • <widget_name>_1
  • <widget_name>_2
  • ...
  • <widget_name>_n

Было бы легко создать такой список виджетов в вашем приложении, например:

widget_list = [builder.get_object('<widget_name>_{0}'.format(i))
               for i in range(1, n+1)]

Чтобы получить, например, элемент 7, все, что вам нужноиндексировать список (обратите внимание, что индексы начинаются с 0):

widget_list[6]

Цель {0} - генерировать имена виджетов:

>> ['<widget_name>_{0}'.format(i)) for i in range(1, 4)
['<widget_name>_1', '<widget_name>_2', '<widget_name>_3']

Для получения дополнительной информации очтобы использовать format, ознакомьтесь с мини-языком спецификации формата

...