- PyGTK
-
PyGTK Тип разработка графического интерфейса
Автор James Henstridge
Johan DahlinРазработчики сообщество
Написана на Операционная система Linux и др. UNIX-подобные, Windows
Первый выпуск сентябрь 2001[1]
Последняя версия 2.24.0 (1 апреля 2011[1])
Состояние активное
Лицензия Сайт 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 2 Репозиторий PyGTK.
- ↑ Это явление упоминается также и в руководстве модуля ctypes, предназначенного для прозрачного взаимодействия Python-программы с двоичным C-кодом: ctypes — A foreign function library for Python
- ↑ В этом примере: переменные «window» и «button» (указывающие на Python-представление GTK-объектов) были сохранены до самого выхода из программы
Ссылки
- Официальный сайт PyGTK.
- PyGTK на русском языке.
- Серия статей на русском языке по PyGTK на Хабрахабр.
Инструменты разработки элементов графического интерфейса Низко-
уровневыеMacintosh Toolbox/Carbon • Windows API • Intrinsics • Intuition • Xlib
Высоко-
уровневыеAmiga OS BOOPSI • Magic User Interface • Zune • ReAction GUI
Mac OS и
Mac OS XCocoa • MacApp • MacZoop • PowerPlant
Microsoft
WindowsUNIX, под X Кросс-
платфор-
менныеНа основе Flash ASWing • Adobe Flex • Gnash • SWF2EXE Software
На основе XML,
AJAX или SVGAmple SDK • CougarXML • Dojo Toolkit • Echo • ExtJS • GladeXML • Google Web Toolkit • jQuery • Lively Kernel • MooTools • Pyjamas • qooxdoo • Rialto Toolkit • script.aculo.us • XML User Interface • XUL • Yahoo! UI Library
На основе Java На основе
C или C++Agar • CEGUI • Component Library for Cross Platform • dlib C++ Library • FLTK • FOX toolkit • OpenGL User Interface Library • GTK+ • IUP • Juce • JX Application Framework • Qt • TnFOX • Visual Component Framework • wxWidgets • YAAF • XForms • XVT • Ultimate++
На основе Common Lisp CAPI • Common Graphics • CLIM • McCLIM • Garnet
На основе Pascal IP Pascal • Lazarus • fpGUI • FireMonkey
На основе Python На основе Objective C На основе других Python Люди Реализации ChinesePython • CLPython • CPython • JPype • Jython • IronPython • PyPy • Python for S60 • Psyco • Stackless Python • Unladen Swallow
Фреймворки CherryPy • Django • Flask • GAE framework • Pylons • Pyramid • Quixote • TurboGears • Twisted • Web2py • Zope
IDE Библиотеки Другое Категории:- Программное обеспечение по алфавиту
- GTK+
- Библиотеки Python
- Свободные библиотеки программ
Wikimedia Foundation. 2010.