Найти - Пользователи
Полная версия: PyGTK - генерация GUI из XML "на лету"
Начало » GUI » PyGTK - генерация GUI из XML "на лету"
1
dorian
Всем доброго времени суток. Возник вопрос относительно генерации пользовательского интерфейса на лету с использованием PyGTK. Необходимо генерить интерфейс пользователя из XML файлов, которые клиент получает от удаленного сервера. Тоесть, у клиента первоначально открывается пустое окно (которое генерится из glade файла и не содержит никаких элементов управления). Далее клиент подключается к серверу, который посылает клиенту XML файл с описанием интерфейса. Возможна ли вообще реализация такого механизма? Попытки найти инфу в интернете не привела к желаемому результату. Согласно доке по PyGTK существует метод gtk.glade.xml_new_from_buffer который вроде как должен создавать новый gtk.glade.XML объект по переданной строке в виде параметра, но опять же не понятно, в каком виде передавать туда XML. Возможно кто-то сталкивался с подобными проблемами?
slivlen
Такое вполне возможно. Создаешь пустое окно, затем грузишь glade файл. Потом открываешь его обычным способом, и загружаешь из него все что нужно кроме окна(т.к. одно у тебя уже есть). Допустим у тебя дочерний эл-т окна загруженного из glade файла - VBox. Тогда через get_widget получаешь его и прикрепляешь к основному окну. Я делал похожее, единственное отличие только то , что glade файлы были локальные и их не надо было грузить.
dorian
Спасибо за ответ, вроде как получилось
slav0nic
ёпт
а теперь открываем доки по pygtk и читаем gtk.Socket() и тп (в пугтк туториал 159 страница)
dorian
slav0nic
ёпт
а теперь открываем доки по pygtk и читаем gtk.Socket() и тп (в пугтк туториал 159 страница)
Каким образом в plug.add я могу передать объект типа gtk.glade.XML ? Или мне необходимо разбирать пlade файл на отдельные виджеты (в plug.add можно передавать только виджеты). К тому же каким образом будет осуществляться связь сокетов с заглушками, если по условию xml структуры интерфейсов будут располагаться на удаленном сервере приложений?
dorian
Еще возник вопрос относительно дерева виджетов. При старте клиента я создаю объект galde.XML из локального glade файла.
……………………
self._gladefile = os.getcwd()+'//glade//client//'+self._config
self._gtkWidgetsTree = gtk.glade.XML(self._gladefile)
……………………

после получения XML файла с сервера, я добавляю полученные элементы интерфейса в родительский виджет:
…………………………………
if self._indata:
mainContainer = self._gtkWidgetsTree.get_widget(self._indata)
appWidgetsTree = gtk.glade.xml_new_from_buffer(self._indata, len(self._indata))
mainContainer.add(appWidgetsTree.get_widget(self._indata))
…………………………………
Как теперь мне обновить дерево виджетов self._gtkWidgetsTree, чтобы оно также включало все виджеты из appWidgetsTree ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB