Использование indent интуитивно для менеджера контекста в операторе with. Флаг quote добавляет в начало каждой строки полужирную фиолетовую конструкцию ~*~.
Модуль colored имеет восемь функций для цветов, а также параметр отключения раскрашивания.
Функция puts() аналогична print(), обрабатывает отступы и кавычки.
Args предоставляет простые инструменты фильтрации для списка аргументов. Возвращает еще один объект Args, что позволяет объединять фильтры в цепочки.
Использовать аргументы args, созданные функцией Args(), можно именно так.
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 для поиска имен команд.
Приложения с графическим интерфейсом
В этом разделе мы сначала перечислим библиотеки с виджетами — наборы инструментов и фреймворки, которые предоставляют кнопки, полосы прокрутки, индикаторы выполнения и другие заранее созданные компоненты. В конце раздела коснемся игровых библиотек.
С точки зрения разработки графических интерфейсов, виджетами являются кнопки, слайдеры, полосы прокрутки и другие распространенные элементы интерфейса. С их помощью вам не нужно заниматься низкоуровневым программированием вроде определения того, какая кнопка (если таковая вообще существует) находилась под курсором мыши в момент клика, или работой с разными оконными API, используемыми разными операционными системами.
Если вы никогда не занимались разработкой интерфейсов, то вам нужно что-то, что легко использовать (чтобы вы поняли, как создавать интерфейсы). Мы рекомендуем Tkinter (находится в стандартной библиотеке Python). Вас заинтересуют структура и функции набора инструментов, который лежит в основе библиотеки, поэтому мы сгруппируем библиотеки по тулкитам, начав с самых популярных (табл. 7.2).
Таблица 7.2.Библиотеки виджетов для графических интерфейсов
Библиотека, лежащая в основе (язык) |
Библиотека Python |
Лицензия |
Причины использовать |
Tk (Tcl) |
tkinter |
Лицензия Python Software Foundation |
Все зависимости поставляются вместе с Python. Предоставляет стандартные виджеты для интерфейса вроде кнопок, полос прокрутки, текстовых окон и полотен |
SDL2 (C) |
Kivy |
MIT или LGPL3 (до версии 1.7.2) |
Может использоваться для создания приложения для Android. |
|
|
|
Имеет функциональность для работы с технологией мультитач. Оптимизирована для С там, где это возможно, и использует GPU |
Qt (C++) |
PyQt |
GNU General Public License (GPL) или Commercial |
На всех платформах выглядит одинаково. Многие приложения и библиотеки уже полагаются на Qt (например, Eric IDE, Spyder и/или Matplotlib), поэтому библиотека может оказаться установленной заранее. Qt5 (нельзя использовать вместе с Qt4) предоставляет инструменты для создания приложения для Android |
Qt (C++) |
PySide |
GNU Lesser General Public License (LGPL) |
Полноценная замена для PyQt, имеющая более либеральную лицензию |
GTK (C) (тулкит GIMP) |
PyGObject (PyGi) |
GNU Lesser General Public License (LGPL) |
Предоставляет связывание с Python для GTK+ 3. Должна быть знакома всем, кто уже разрабатывал для GNOME |
GTK (C) |
PyGTK |
GNU Lesser General Public License (LGPL) |
Применяйте только в том случае, если ваш проект уже использует PyGTK; вы должны портировать старый код PyGTK к PyGObject |
wxWindows (C++) |
wxPython |
Лицензия wxWindows (модифицированная LGPL) |
Предоставляет нативный внешний вид, предлагая различные оконные библиотеки для каждой платформы. Для разных платформ некоторые фрагменты кода будут отличаться |
Objective C |
PyObjC |
Лицензия MIT |
Предоставляет интерфейс для работы с Objective C. Придаст вашему проекту для OS X нативный вид. Не может использоваться на других платформах |
В следующих разделах представлена более подробная информация о разных библиотеках для создания графического интерфейса для Python, они сгруппированы по лежащему в их основе тулкиту.
Читать дальше