Вспомогательное сообщение выглядит так:

$ python hello.py — help

Usage: hello.py [OPTIONS] NAME

··Say hello, with capitalization and a name.

Options:

··-capitalize

··-repetitions INTEGER Times to repeat the greeting.

··-help Show this message and exit.

Реальная ценность Click заключается в ее модульности — вы можете добавить внешнюю функцию группировки, а затем любую другую функцию, декорированную с помощью click, в ваш проект, и они станут субкомандами для этой команды верхнего уровня:

Декоратор group() создает команды верхнего уровня, которые запускаются первыми (перед вызванной субкомандой).

С помощью декоратора pass_context (опционально) передаются объекты из сгруппированной команды в субкоманду, первый аргумент становится объектом click.core.Context.

Этот объект имеет специальный атрибут ctx.obj, который можно передавать субкомандам, использующим декоратор @click.pass_context.

Теперь вместо функции hello() вызывайте функцию, которая была декорирована @click.group(); в нашем случае это cli().

<p>Clint</p>

Библиотека Clint (https://pypi.python.org/pypi/clint/) соответствует своему названию и является набором инструментов для работы с интерфейсами командной строки (Command-Line INterface Tools). Поддерживает такую функциональность, как раскрашивание CLI и добавление отступов, индикаторов выполнения, основанных на итераторах, допускает неявную обработку аргументов. Кроме того, это простое и мощное средство отображения столбцов. В этом примере показаны инструменты для раскрашивания и создания отступов:

Использование indent интуитивно для менеджера контекста в операторе with. Флаг quote добавляет в начало каждой строки полужирную фиолетовую конструкцию ~*~.

Модуль colored имеет восемь функций для цветов, а также параметр отключения раскрашивания.

Функция puts() аналогична print(), обрабатывает отступы и кавычки.

Args предоставляет простые инструменты фильтрации для списка аргументов. Возвращает еще один объект Args, что позволяет объединять фильтры в цепочки.

Использовать аргументы args, созданные функцией Args(), можно именно так.

<p>cliff</p>

cliff (https://pypi.python.org/pypi/cliff) (Command-Line Interface Formulation Framework — фреймворк для формулирования интерфейсов командной строки) — это фреймворк для создания программ командной строки. Предполагается, что он должен использоваться для создания уникальных мультиуровневых команд, которые ведут себя как svn (Subversion) либо git, или интерактивных программ вроде оболочек Cassandra или SQL.

Функциональность cliff сгруппирована в абстрактных базовых классах. Вам нужно реализовать cliff.command.Command для каждой субкоманды, а затем cliff.commandmanager.CommandManager делегирует правильной команде. Рассмотрим минимальную версию программы hello.py:

cliff использует непосредственно argparse.ArgumentParser для интерфейса командной строки.

Получаем версию из setup.py (при последнем запуске pip install).

Для абстрактного базового класса требуется get_parser() — он должен возвращать argparse.ArgumentParser.

Для абстрактного базового класса требуется take_action() — он запускается при вызове команды Hello.

В основном приложении создается подкласс cliff.app.App, отвечающий за настройку журналирования, потоки ввода/вывода и все остальное, что можно применить ко всем субкомандам.

CommandManager управляет всеми классами Command, использует содержимое из entry_points файла setup.py для поиска имен команд.

<p>Приложения с графическим интерфейсом</p>

В этом разделе мы сначала перечислим библиотеки с виджетами — наборы инструментов и фреймворки, которые предоставляют кнопки, полосы прокрутки, индикаторы выполнения и другие заранее созданные компоненты. В конце раздела коснемся игровых библиотек.

<p>Библиотеки виджетов</p>

С точки зрения разработки графических интерфейсов, виджетами являются кнопки, слайдеры, полосы прокрутки и другие распространенные элементы интерфейса. С их помощью вам не нужно заниматься низкоуровневым программированием вроде определения того, какая кнопка (если таковая вообще существует) находилась под курсором мыши в момент клика, или работой с разными оконными API, используемыми разными операционными системами.

Если вы никогда не занимались разработкой интерфейсов, то вам нужно что-то, что легко использовать (чтобы вы поняли, как создавать интерфейсы). Мы рекомендуем Tkinter (находится в стандартной библиотеке Python). Вас заинтересуют структура и функции набора инструментов, который лежит в основе библиотеки, поэтому мы сгруппируем библиотеки по тулкитам, начав с самых популярных (табл. 7.2).

Таблица 7.2. Библиотеки виджетов для графических интерфейсов
Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Похожие книги