PyGTK

PyGTK
PyGTK
Тип

разработка графического интерфейса

Автор

James Henstridge
Johan Dahlin

Разработчики

сообщество

Написана на

Python, C

Операционная система

Linux и др. UNIX-подобные, Windows

Первый выпуск

сентябрь 2001[1]

Последняя версия

2.24.0 (1 апреля 2011[1])

Состояние

активное

Лицензия

GNU LGPL

Сайт

pygtk.org

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

Начиная с версии 2.8, обёртки объектов GLib вынесены в отдельную библиотеку — PyGObject.

Содержание

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

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

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
 
import gtk
 
 
def 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', lambda w: 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()
Результат выполнения программы

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

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

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

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

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

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

См. также

Примечания

  1. 1 2 Репозиторий PyGTK.
  2. Это явление упоминается также и в руководстве модуля ctypes, предназначенного для прозрачного взаимодействия Python-программы с двоичным C-кодом: ctypes — A foreign function library for Python
  3. В этом примере: переменные «window» и «button» (указывающие на Python-представление GTK-объектов) были сохранены до самого выхода из программы

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "PyGTK" в других словарях:

  • Pygtk — Maintainer: James Henstridge Aktuelle Version: 2.14.1 (6. März 2009 …   Deutsch Wikipedia

  • PyGTK — Maintainer James Henstridge Aktuelle Version 2.24.0 (1. April 2011[1]) …   Deutsch Wikipedia

  • PyGTK — Développeur James Henstridge Dernière version 2.1 …   Wikipédia en Français

  • PyGTK — Saltar a navegación, búsqueda PyGTK es un binding de la biblioteca gráfica GTK para el lenguaje de programación Python. La biblioteca GTK se usa para desarrollar el entorno gráfico GNOME, así como sus aplicaciones, a la vez que algunos otros… …   Wikipedia Español

  • PyGTK — Infobox Software name = PyGTK caption = developer = James Henstridge latest release version = 2.12.1 latest release date = January 4, 2008 [January 4th, 2008: [http://www.daa.com.au/pipermail/pygtk/2008 January/014707.html ANNOUNCE: PyGTK 2.12.1] …   Wikipedia

  • PyGtk — …   Википедия

  • Pygtk — …   Википедия

  • GIMP-Toolkit — Entwickler: Das GTK+ Team Aktuelle Version: 2.16.1 (12. April 2009) …   Deutsch Wikipedia

  • GIMP Toolkit — Entwickler: Das GTK+ Team Aktuelle Version: 2.16.1 (12. April 2009) …   Deutsch Wikipedia

  • GTK2 — GIMP Toolkit Entwickler: Das GTK+ Team Aktuelle Version: 2.16.1 (12. April 2009) …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»