#python #gtk #glade #gtkbuilder
#python #gtk #glade #gtkbuilder
Вопрос:
Я пытаюсь создать какое-то окно в glade, и я хочу, чтобы оно использовалось в моем коде на python с помощью GtkBuilder
Я просто как-то не могу сгенерировать GtkBuilder xml
Когда я сохраняю что-то в Glade, я получаю файл .glade
Не могли бы вы помочь мне, как я могу сгенерировать GtkBuilder xml?
$ rpm -q glade3
glade3-3.10.0-2.fc15.x86_64
Спасибо
Ответ №1:
Я пробовал следующее в Ubuntu 10.04, но, думаю, оно должно работать и в вашей системе. Если вы используете glade-3
, когда сохраняете файл, выберите опцию Сохранить как … вместо сохранения, вам будет предложено ввести имя файла с отображением файлового браузера. Здесь, в левом нижнем углу, вы можете увидеть параметры выбора формата файла, например:
Форматы файлов
() GtkBuilder
() Libglade
(извините, не могу загрузить изображение) 🙂
Выберите опцию GtkBuilder и сохраните как filename.xml по вашему выбору. Это должно сработать! Для перекрестной проверки, является ли сгенерированный файл файлом .glade или совместимым с GtkBuilder XML-файлом (поскольку оба находятся в формате XML), корневой узел в файле .glade будет glade-interface
, тогда как в совместимом с GtkBuilder XML-файле он будет interface
Если у вас есть существующий файл .glade, вы можете заглянуть в скрипт gtk-builder-convert для преобразования в совместимый с GtkBuilder XML-файл.
Надеюсь, это поможет!
Комментарии:
1. вот как я это сделал, но когда я запускаю xml, я получаю трассировку (последний последний вызов): File «. /main.py «, строка 49, в файле <module> w = Window() «./main.py «, строка 39, в инициализации self.builder.add_from_file(‘main.xml ‘) бойкий. Ошибка: недопустимый тип объекта `GtkGrid’
2. @javo: Какую версию Gtk вы используете? Похоже, GtkGrid является частью Gtk 3. В main.xml что означает строка
<requires lib="gtk " version="XXX"/>
, указывающая на требуемую версию? Есть ли у вас возможность выбрать версию Gtk при запуске glade?3. Как говорит другой.anon.coward, GtkGrid является частью GTK 3. Таким образом, в зависимости от версии библиотеки GTK (которая в соответствии с вашей версией Ubuntu и дистрибутивом является GTK 2.20), вам необходимо установить в свойствах проекта glade эту версию, чтобы она знала, какие виджеты доступны. Смотрите диалоговое окно свойств проекта .
4. Упс, anone.anon.coward использует Ubuntu 10.04, но ты, javo, используешь Fedora 15, поэтому твоя версия GTK — 3.0. Если у вас ошибка, это означает, что вы, вероятно, не используете правильные привязки. pygtk больше не используется, это gobject-instrospection, который используется с GTK 3. Поэтому не используйте в своем коде на python
import pygtk
but вместо этого:from gi.repository import Gtk
. Прочитайте эти ссылки: live.gnome.org/PyGObject и python-gtk-3-tutorial.readthedocs.org/en/latest5. Просто для GTK 3 старые привязки PyGTK были заменены новыми привязками, которые используют PyGObject. Функции самоанализа GObject помогают в обслуживании привязок, что было сложнее в PyGTK.
Ответ №2:
Может ли этот наставник помочь?
http://www.learningpython.com/2006/05/07/creating-a-gui-using-pygtk-and-glade/
Комментарии:
1. в этом руководстве используется glade вместо GtkBuilder, мне сказали, что GtkBuilder — это какая-то замена, и я должен использовать его вместо Glade, теперь у меня есть файл .glade, и я хочу файл .xml
2. Зачем вам GtkBuilder? Просто используйте файл glade, как показано, он отлично работает!
3. @Louis: GtkBuilder или LibGlade — это формат XML, используемый в файле glade. То, что он хочет, это файл glade с GtkBuilder XML в нем.