Конституция Армении: Статья 18.1
Конституция Армении (Статья 18.1) закрепляет «исключительную миссию Армянской Апостольской Святой Церкви как национальной церкви в духовной жизни армянского народа, в деле развития его национальной культуры и сохранения его национальной самобытности»:
PyGTK

PyGTK

Материал из Википедии — свободной энциклопедии

PyGTK — набор Python-привязок для библиотеки графического интерфейсаGTK+. PyGTK является свободным ПО и распространяется на условиях GNU LGPL. Библиотека была выбрана в качестве официального инструментария разработки для программы «Ноутбук за 100 долларов».

Начиная с версии 2.8, обёртки объектов GLib вынесены в отдельную библиотеку — PyGObject, которая должна полностью вытеснить PyGTK при использовании GTK+ версии 3. Хотя PyGTK является стабильной, достаточно развитой и одной из четырёх основных библиотек графического интерфейса для Python, её разработка была остановлена авторами в 2011 году[2], пользователям было рекомендовано переходить на PyGObject[3].

Пример: программа Hello World

Этот пример приведён для Python версии 2.x. Другие примеры можно найти в архиве с исходными кодами PyGTK, в папке examples.

#!/usr/bin/env python#-*- coding: UTF-8 -*-import gtkdef button_clicked(button):print('Hello World!')def main():window=gtk.Window()window.set_default_size(240,180)window.set_title('Hello World!')window.connect('destroy',lambdaw:gtk.main_quit())button=gtk.Button('Press Me')button.connect('clicked',button_clicked)button.show()window.add(button)window.present()gtk.main()if__name__=='__main__':main()
Результат выполнения программы

PyGObject

PyGObject предоставляет оболочку для использования в программах Python при доступе к библиотекам GObject. GObject — это объектная система, используемая библиотеками GTK, GLib, GIO, GStreamer и другими библиотеками.

Как и сама библиотека GObject, PyGObject распространяется по лицензии GNU LGPL, поэтому подходит для использования как в свободном программном обеспечении, так и в коммерческих приложениях. Он уже используется во многих приложениях — от небольших специализированных скриптов до крупных полнофункциональных приложений.

PyGObject может динамически обращаться к любым библиотекам GObject, использующим GObject Introspection. Это устраняет необходимость в отдельных модулях, таких как PyGTK, GIO и python-gnome, для создания полноценного приложения GNOME 3.0. После добавления новой функциональности в библиотеку GObject она мгновенно становится доступной как Python API без необходимости использования промежуточного Python-склеивающего компонента.

Особенности сборки мусора

GTK+ реализован на языке C и имеет собственную (не интегрированную в полной мере с Python) систему учёта ссылок между GObject-объектами для удаления более не используемых GTK-объектов (то есть для обработки этих объектов системой сборки мусора GObject).

Как следствие этого — не исключены случаи, когда ссылки на Python-объекты (например, ссылки на функции обратного вызова), сохранённые внутри GTK-объектов (то есть GObject-объектах), превращаются в слабые ссылки и могут быть удалены системой сборки мусора Python.[4]

Следствием непредусмотренного программистом превращения ссылок в слабые ссылки могут стать ошибки при выполнении программы, когда, например, вызванная Callback-функция станет оперировать с неинициализированными данными (то есть с данными, очищенными сборщиком мусора Python).

Превращение ссылок в слабые ссылки не будет происходить, пока GTK-объект всё ещё описывается в Python-программе как PyGTK-объект (то есть пока алгоритм программы не исключает из области видимости ссылки на Python-объект, описывающий GTK-объект). Однако GTK-объекты, добавляя себя в качестве дочерних для других GTK-объектов, не сохраняют ссылку на своё Python-описание. Впрочем, программист может сделать это (сохранить Python-описание GTK-объекта) самостоятельно, как, например, это было сделано в описанном выше примере программы Hello World[5].

Другим способом страховки от паразитных явлений при превращении ссылок на Python-функции в слабые ссылки может быть и методология: когда GTK-объекты оперируют только со ссылками на Python-функции, которые в явном виде сохранены в области видимости Python-программы (при этом сохранять ссылки на сами PyGTK-объекты — необходимости уже нет).

См. также

Примечания

  1. 12http://ftp.gnome.org/pub/GNOME/sources/pygtk/2.24/
  2. Summerfield, M. Python in Practice: Create Better Programs Using Concurrency, Libraries, and Patterns. — Pearson Education, 2013. — P. 232. — ISBN 9780133373233.
  3. PyGTK: GTK+ for Python (официальный сайт). Дата обращения: 7 июня 2011. Архивировано 15 июня 2011 года.
  4. Это явление упоминается также и в руководстве модуля ctypes, предназначенного для прозрачного взаимодействия Python-программы с двоичным C-кодом: ctypes — A foreign function library for PythonАрхивная копия от 15 октября 2012 на Wayback Machine
  5. В этом примере: переменные «window» и «button» (указывающие на Python-представление GTK-объектов) были сохранены до самого выхода из программы

Литература

Ссылки

PyGTK
Скриншот программы PyGTK
Типразработка графического интерфейса
АвторыJames Henstridge
Johan Dahlin
Разработчиксообщество
Написана наPython, C
Операционные системы Linux и др. UNIX-подобные, Windows
Последняя версия
Репозиторийgitlab.gnome.org/Archive…
Состояние активное
ЛицензияGNU LGPL
Сайтpygtk.org