Создание многоразовых компонентов с полянкой GTK - PullRequest
1 голос
/ 07 апреля 2011

Я пишу простое приложение и использую Glade (GTK) для пользовательского интерфейса. Мне нужно много окон (~ 10), одно из которых открывается в зависимости от флагов командной строки, других контекстных вещей и т. Д.

Теперь все эти окна очень похожи, они имеют 3 вкладки верхнего уровня, последняя вкладка одинакова во всех, у всех есть кнопки OK, Quit и т. Д., Поэтому я ищу способ построить эти окна на поляне. Я мог бы скопировать, вставить одно окно и внести в него изменения, но я ищу лучший способ, который позволил бы мне повторно использовать общие части окон.

Кроме того, я использую pygtk для загрузки окон.

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Дизайн виджета с общими аспектами, которые вы упоминаете. Везде, где вам нужно реализовать что-то другое, поместите GtkAlignment с соответствующим именем. Не забудьте изменить выравнивание и заполнить значения GtkAlignment.

В PyGTK вы можете gtk.Builder.get_object (name) , чтобы получить доступ к этим пустым областям и добавить в них дополнительные компоненты (которые также могут быть разработаны с помощью Glade).

0 голосов
/ 07 апреля 2011

Хорошо, с помощью ответа Детли, я могу заставить что-то работать.Для тех, кому это нужно, вот что я сделал.

main.glade содержит окно и все общие слова, которые мне нужно отобразить во всех окнах.comp.glade содержит окно с компонентом vbox с необходимым мне дополнительным материалом, назовем его top_comp.

Теперь в main.glade я поместил компонент gtk.Alignment в то место, где янужно загрузить дополнительный компонент и вызвать его, скажем, 'comp_holder'.С моим конструктором я делаю

builder = gtk.Builder()
builder.add_from_file('main.glade'))
builder.add_from_file('comp.glade'))

builder.get_object('top_comp').reparent(builder.get_object('comp_holder'))

Этот метод пока работает, но я не знаю, является ли это правильным способом.

Любые предложениядля вышеупомянутого приветствия.

...