Подтвердить что ты не робот

Я полностью запутался с PyObject, PyGTK и GNOME 3

Я установил Fedora 15 для использования Python3 и GObject для разработки настольного приложения, поскольку PyGTK выглядит устаревшим:

Вышел PyGTK 2.24.0 Пятница 01 апреля 2011 г. Рафаэль Вильяр Берк Выпущен PyGTK 2.24.0. Это стабильный релиз, поддерживающий API GTK + 2.24. Новые пользователи, желающие разрабатывать приложения Python с использованием GTK +, рекомендуют использовать функции Gobject-Introspection, доступные в PyGObject. [...]

PyGobject 2.26.0. Это первая стабильная версия в серии 2.26.x и вводит начальную поддержку для интроспекции и Python 3. [...]

Источник: http://www.pygtk.org/

Я думал, что STRIKE! использует Python 3 и PyGObject для разработки новых приложений Gnome3! Я посетил страницу PyGObject Страница и увидел, что самая новая стабильная версия - 2.28 (и поддерживается Python3 с версии 2.26), которая установлена ​​на Fedora, НО только с привязками python2.

Что за черт?

Я посетил PyGobject demos и Examples на Сайте, и посмотрел на источник, и каждый код использует pygtk + pygtk.require('2.0') вместо pygobject.

Я что-то упустил? Как я могу использовать Python3 и PyGObject для разработки приложений Gnome 3?

4b9b3361

Ответ 1

Обновление: здесь есть немного документации: Учебник Python GTK + 3. Он все еще не имеет ничего общего с GIO и т.д.

Это не... er, невозможно... но поскольку вы говорите о последних поколениях GTK (& co) привязок, все должно быть немного позади. Усилия разработчиков в основном направлены на фактическое развитие, а документация, примеры и т.д., Скорее всего, поймают гораздо позже. Такова реальность бесплатного программного обеспечения:/Помните, что PyGI был недавно объединен с PyGObject, так что есть еще один разрыв в редактировании истории.

Итак, мой ответ вам:

  • Подпишитесь на списки рассылки PyGTK/PyGObject, попросите некоторые указатели или справочные материалы, или возьмите с собой ручку и оттуда оттуда. Постоянный канал для разработчиков - это действительно единственный способ остаться на вершине вещей.
  • Держите этот момент (и это выражение лица парня) заправленным в уголке вашего мозга, так что, когда вы достигнете скорости, вы - да, вы, сэр, ВЫ - можете написать некоторые из этих материалов и отправить это как документация для следующей несчастной души, которая находится в этой ситуации.

(Лично я не могу дождаться, чтобы отложить некоторое время, чтобы попробовать что-то добавить вместе с новым API, но я пытаюсь отложить до тех пор, пока Gnome 3 не будет в Debian. Я с нетерпением жду таких выражений на лице. )

Ответ 2

Демоны платформы на developer.gnome.org полностью написаны в GTK 3 и GNOME 3. На данный момент есть только два доступных для Python, остальные еще не переведены, но это должно вас начать.

К сожалению, даже спустя годы после того, как GTK 3 является обычным явлением, вы по-прежнему будете работать в учебниках PyGTK 2 онлайн, потому что люди пишут их во вспышке энтузиазма и никогда не обновляют их снова. Никто их не возьмет, потому что в них еще может быть ценный материал, и вам нужно только изменить X, Y и Z, чтобы заставить его работать с GTK 3... Вот почему вы все еще можете найти C-уроки для GTK 1.2 онлайн.

Итак, если вы найдете учебник для PyGTK 2, вам бы хорошо написать электронное письмо тому, кто его размещает, сообщая им об этом. Еще лучше обновите учебник для GTK 3 и отправьте им новую версию! Это, в конце концов, открытый источник.

Ответ 3

несмотря на   импортировать pygtk pygtk.require( '2,0') они написаны в интроспекции, если вы закомментируете импорт пигтта, все они все еще работают, я подозреваю, что это просто надзор, я потратил немного времени на попытку переноса некоторых вещей в последнее время

способ сказать, как код импортирует сам gtk

#import pygtk
#pygtk.require('2.0')
from gi.repository import Gtk, GLib, GObject, GdkPixbuf, Gio, Pango

означает, что он использует интроспекцию, если код делает gtk-вещи с помощью капитала G, то его определенная интроспекция тоже:) например

#a pygtk window
awindow = gtk.Window()
#an introspection window
awindow = Gtk.Window()

Ответ 4

Теперь я разработал приложение GTK+ для загрузки и установки Anaconda3 из здесь, а затем создайте новую виртуальную среду с помощью:

conda create --name xld-attribute-value-adder python=3.4 pip setuptools pygobject

(я добавил pip и setuptools, потому что virtualenv использовал их, чтобы добавить их при создании виртуальной среды. Я знаю, что я могу использовать pip для установки пакетов, но setuptools name подразумевает, что он может использоваться или используется для чего-то подобного.)

Тогда Anaconda говорит мне, что он не может найти PyGObject и что я могу его искать с помощью binstar (отличный, другой инструмент, о котором нужно помнить!) следующим образом:

binstar search -t conda pygobject

Однако это приводит к нескольким результатам поиска:

Name                      |  Version | Package Types   | Platforms      
 ------------------------- |   ------ | --------------- | ---------------
 ???/pygobject3            |   3.12.0 | conda           | linux-64       
                                      : None
 KristanArmstrong/pygobject |   3.14.0 | conda           | win-64         
                                      : PyGObject is a Python extension module that gives clean and consistent access to the entire GNOME software platform through the use of GObject Introspection.
 fallen/pygobject          |   3.14.0 | conda           | linux-64, linux-32
                                      : PyGObject is a Python extension module that gives clean and consistent access to the entire GNOME software platform through the use of GObject Introspection.
 jeanconn/pygobject        |          | conda           | linux-64       
                                      : None
 pkgw/pygobject3           |   3.12.0 | conda           | linux-64       
                                      : None
 ska/pygobject             |   2.20.0 | conda           | linux-64       
                                      : Pipeline running tools
 vgauthier/pygobject       |   3.10.0 | conda           | osx-64         
                                      : Python Bindings for GLib/GObject/GIO/GTK+

Итак, как узнать, какой из них мне нужно установить? Я хочу, чтобы вы были самыми современными и стабильными, конечно... Некоторые из них не подходят, потому что они не для моей системы linux-64. Я хочу сделать поиск, который показывает только те, которые доступны для моей системы, поэтому я нашел несколько сообщений, рассказывающих мне, что этот вид поиска возможен на Anaconda веб-сайт сам вводит следующее в поле ввода поиска:

access:public platform:linux-64 pygobject

Теперь я вижу только 4 результата и до сих пор не знаю, какая из них самая актуальная, или какой из них я должен использовать. сайт Anaconda не сообщает мне, когда эти репозитории также были обновлены. Поэтому я предполагаю, что это номер с наивысшим номером версии. На самом деле я нашел веб-сайт, в котором говорится, что версия PyGObject 3.14 имеет 22 Sep 2014 или, по крайней мере, сообщение на этом веб-сайте из этого дата.

Я создал виртуальную среду без аргумента pygobject:

conda create --name xld-attribute-value-adder python=3.4 pip setuptools

Затем активирует его:

source activate xld-attribute-value-adder

а затем установите PyGObject, используя:

conda install -c https://conda.anaconda.org/fallen pygobject

После этого я изменил Project Interpreter этого проекта в моей IDE PyCharm (да, я использую PyCharm для этого проекта на данный момент) в двоичном файле Python 3.4 моей недавно созданной виртуальной среды:

(Project Directory)/bin/python3.4

Затем я открываю файл python, который содержит строку:

from gi.repository import Gtk

PyCharm пока не обнаруживает Gtk или имеет некоторые другие проблемы, поэтому мне нужно было щелкнуть красным подчеркнутым Gtk и Alt+Enter на нем и выбрать для него создание двоичных заглушек.

После всего этого он наконец-то работал:)