Не удается сгенерировать GtkBuilder.xml в поляне

#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/latest

5. Просто для 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 в нем.