Можно ли использовать поляну с самоанализом Python Pygi?

Однажды я начал изучать PyGtk и Glade, но так и не закончил. Недавно я увидел, что PyGtk обесценивается в пользу использования самоанализа на https://wiki.ubuntu.com/MeetingLogs/appdevweek1104/GObjectIntrospection и https://wiki.ubuntu.com/MeetingLogs / appdevweek1104 / PyGI . Я решил попробовать еще раз изучить Python и Gtk, используя новый способ. Страницы, на которые я ссылаюсь, показывают, как бы вы это делали, если бы я хотел сделать GUI в коде, но мне нравится использовать Glade. Есть ли способ сделать это и по-прежнему использовать новый самоанализ?

5
задан 10 October 2011 в 23:03

2 ответа

Да, на самом деле это почти точно так же:

from gi.repository import Gtk

class Test (object):

    def __init__(self):
        self.builder = Gtk.Builder()
        self.builder.add_from_file("test.glade")
        self.builder.connect_signals(self)

    def run(self, *args):
        self.builder.get_object("window1").show()
        Gtk.main()

    def quit(self, *args):
        Gtk.main_quit()


Test().run()

Многие небольшие программы потребуют мало усилий для преобразования. Вы можете начать с переключения на интроспекцию объекта с помощью следующих двух строк, а затем исправить все ошибки, просмотрев их в справочнике.

from gi.repository import Gtk as gtk
from gi.repository import Gobject as gobject

Например, gtk.RESPONSE_OK будет называться Gtk.ResponseType.OK, когда вы используете интроспекцию.

0
ответ дан 10 October 2011 в 23:03

Имейте в виду, что вам нужен Glade 3.10 или новее для создания интерфейса GTK 3. 3.8 или старше для GTK 2. В Ubuntu пакеты называются glade и glade-gtk2.

Если вам нужно преобразовать (старое) приложение PyGTK в PyGI, вы должны попробовать скрипт pygi-convert, который поставляется с архивом PyGObject. Во многих случаях этого должно быть достаточно, чтобы преобразовать ваше приложение. Это также можно найти в GIT: http://git.gnome.org/browse/pygobject/tree/pygi-convert.sh

Следующая ссылка также должна помочь с некоторыми базовыми объяснениями из общих вещей, которые изменились: https://live.gnome.org/PyGObject/IntrospectionPorting

И, наконец, (очень хорошая) попытка создать учебник по PyGI: http://readthedocs.org/docs/python-gtk-3-tutorial/en/latest/index.html

Я считаю полезным взглянуть на C-документы, когда создание чего-либо: http://developer.gnome.org/gtk3/ Как только вы узнаете, как все делается в Python, это может быть очень хорошим ресурсом для вещей, которые еще не документированы. Давайте посмотрим на пример gtk.RESPONSE_OK, приведенный в другом ответе. При переходе к документации на C вы найдете следующее: http://developer.gnome.org/gtk3/3.2/GtkDialog.html#GtkResponseType Возьмите имя перечисления (GtkResponseType) и разбейте 'Gtk 'разделите точкой и добавьте тип enum без GTK_ *, так что вы получите: Gtk.ResponseType.OK Это работает со всеми перечисленными мной перечислениями.

0
ответ дан 10 October 2011 в 23:03

Другие вопросы по тегам:

Похожие вопросы: