ЛЕКЦИЯ 8
.pdf
5.PyGTK.
Интерфейс Python к GTK, переносимой библиотеке GUI, первоначально использовавшейся как ядро оконной системы Gnome в Linux. Пакеты расширений gnome-python и PyGTK экспортируют функции в инструментальных наборах Gnome и GTK для использования в сценариях Python. Интерфейс PyGTK поддерживает возможность работы в Windows, Linux и Mac OS X.
#!/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()
6.Jython.
Jython является реализацией Python для Java, которая компилирует исходный программный код Python в байт-код Java и обеспечивает сценариям Python беспрепятственный доступ к библиотекам классов Java на локальном компьютере.
Благодаря этому библиотеки для построения графических интерфейсов на языке Java, такие как swing и awt, дают еще один способ построения GUI на языке Python, выполняемом в системе JPython. Очевидно, такие решения являются специфическими для Java, и их переносимость ограничена переносимостью языка Java и его библиотек.
Swing является самым крупным и самым сложным способом создания GUI в Python.
Кроме того, существует пакет jtkinter, который является версией tkinter для Jython, использующей Java JNI, – если он установлен, сценарии на языке Python смогут также использовать tkinter для построения GUI в Jython.
7.IronPython.
Очень напоминающая Jython, система IronPython является реализацией языка Python для окружения .NET, которая, кроме всего прочего, компилирует программы на языке Python в байт-код .NET, что также позволяет сценариям Python использовать возможности конструирования графических интерфейсов, имеющиеся в .NET Framework. Вы пишете программный код на языке Python, но для конструирования интерфейсов и приложений в целом используете компоненты C#/.NET.
Программный код на IronPython может выполняться в Windows, под управлением .NET, и в Linux, под управлением Mono, реализации .NET, и Silverlight, клиентской платформы полнофункциональных интернетприложений (RIA) для webброузеров.
8.Полнофункциональные интернет-приложения (Rich Internet Applications, RIA).
Web-страницы, отображаемые с помощью HTML, также могут считаться своего рода пользовательским интерфейсом.
Поскольку такие системы предоставляют комплекты виджетов, отображаемых веб-броузерами, они способны предложить те же преимущества переносимости, которые свойственны веб-страницам в целом. В их число входят AJAX и фреймворки, ориентированные на широкое применение JavaScript на стороне клиента, такие как:
●Flex. Фреймворк с открытыми исходными текстами от компании Adobe и часть платформы Flash.
●Silverlight. Фреймворк от корпорации Microsoft, который также реализован в Linux в виде фреймворка Moonlight для Mono, – доступный из программного кода на языке Python при использовании системы IronPython.
●JavaFX. Платформа Java для построения RIA, которые способны выполняться на различных связанных между собой устройствах.
●Pyjamas. Версия фреймворка Google Web Toolkit, опирающегося на использование AJAX, реализованная на языке
Python, в состав которой входит набор виджетов пользовательского интерфейса и компилятор с языка Python на язык JavaScript, что позволяет выполнять сценарии в броузере, на стороне клиента.
Вообще говоря, веб-броузеры сами являются «настольными» приложениями с графическим интерфейсом, но они получили гораздо более широкое распространение, чем библиотеки GUI, и благодаря инструментам RIA способны отображать другие графические интерфейсы. С помощью таких фреймворков можно строить графические интерфейсы, основанные на использовании виджетов, но за ними стоят накладные расходы, связанные с необходимостью сетевых взаимодействий, и они часто подразумевают использование более тяжеловесного программного комплекса, чем традиционные инструменты создания графических интерфейсов. В действительности, чтобы превратить броузеры в универсальные платформы отображения графических интерфейсов, полнофункциональные интернет-приложения предполагают использование дополнительных программных уровней и зависимостей и даже нескольких языков программирования.
9.Сбор данных в Web с помощью mechanize и Beautiful Soup.
Для сбора данных с Web-страниц в Python существует библиотека mechanize, автоматизирующая взаимодействие с Web-сайтами. Часто используемая совместно с ней библиотека Beautiful Soup помогает понять тот «почти-HTML» код, который обычно находится на Web-сайтах.
Одной из самых больших сложностей при автоматизации сбора данных в Web или какой-либо другой имитации взаимодействия пользователя с Web-сайтом является использование Web-сервером cookies для отслеживания пользовательских сеансов. Конечно, поскольку cookies являются частью заголовка HTTP пакета, они доступны при обращении к ресурсам с помощью urllib.
Однако, библиотека mechanize поднимает обработку cookies на более высокий уровень абстракции и позволяет вашему сценарию или интерактивной оболочке Python действовать почти как настоящий Web-браузер.
На создание библиотеки mechanize для Python повлиял пакет WWW:Mechanize из Perl, который обладает похожими возможностями.
Близким другом mechanize является не менее полезная библиотека Beautiful Soup. Она отлично подходит для разбора «примерно корректной» HTML разметки, которую часто можно встретить на Web-страницах в реальной жизни.
Не обязательно использовать Beautiful Soup в связке с mechanize, как и наоборот, но все же в большинстве случаев при работе с «настоящим Web» вы, скорее всего, будете использовать обе библиотеки.
