Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

PyQt - это привязка Python к кроссплатформенному набору инструментов графического интерфейса Qt , реализованная как подключаемый модуль Python . PyQt - бесплатное программное обеспечение, разработанное британской фирмой Riverbank Computing. Он доступен на условиях, аналогичных версиям Qt старше 4.5; это означает множество лицензий, включая Стандартную общественную лицензию GNU (GPL) и коммерческую лицензию, но не Стандартную общественную лицензию ограниченного применения GNU (LGPL). [3] PyQt поддерживает Microsoft Windows, а также различные разновидности UNIX , включая Linux и MacOS (или Дарвин) . [4]

PyQt реализует около 440 классов и более 6000 функций и методов [5], включая:

  • существенный набор виджетов GUI
  • классы для доступа к базам данных SQL ( ODBC , MySQL , PostgreSQL , Oracle , SQLite ) [6]
  • QScintilla, виджет редактора форматированного текста на основе Scintilla
  • виджеты с поддержкой данных, которые автоматически заполняются из базы данных
  • XML парсер
  • Поддержка SVG
  • классы для встраивания элементов управления ActiveX в Windows (только в коммерческой версии) [7]

Для автоматической генерации этих привязок Фил Томпсон разработал инструмент SIP , который также используется в других проектах.

В августе 2009 года , Nokia , тогдашние владельцы инструментария Qt, выпущенный PySide , обеспечивая аналогичные функциональные возможности , но под LGPL , [8] , не сумев достичь соглашения с Ривербанком Computing [9] , чтобы изменить свои условия лицензирования для включения LGPL , как альтернативная лицензия.

Альтернативный логотип PyQt

Основные компоненты PyQt [ править ]

PyQt4 содержит следующие модули Python.

  • Модуль QtCore содержит основные классы, не относящиеся к графическому интерфейсу пользователя, включая цикл событий и механизм сигналов и слотов Qt. Он также включает независимые от платформы абстракции для Unicode , потоков, сопоставленных файлов, общей памяти, регулярных выражений , а также параметров пользователя и приложения.
  • Модуль QtGui содержит большинство классов GUI. К ним относятся несколько классов таблиц, деревьев и списков, основанных на шаблоне проектирования модель – представление – контроллер . Также предоставляется сложный виджет 2D- холста, способный хранить тысячи элементов, включая обычные виджеты.
  • Модуль QtNetwork содержит классы для написания клиентов и серверов UDP и TCP . Он включает классы, которые реализуют FTP- и HTTP- клиентов и поддерживают поиск в DNS . Сетевые события интегрированы с циклом событий, что упрощает разработку сетевых приложений.
  • Модуль QtOpenGL содержит классы, которые позволяют использовать OpenGL при рендеринге 3D- графики в приложениях PyQt.
  • Модуль QtSql содержит классы, которые интегрируются с открытыми и проприетарными базами данных SQL. Он включает редактируемые модели данных для таблиц базы данных, которые можно использовать с классами графического интерфейса. Он также включает реализацию SQLite .
  • Модуль QtSvg содержит классы для отображения содержимого файлов SVG. Он поддерживает статические функции SVG 1.2 Tiny.
  • Модуль QtXml реализует интерфейсы SAX и DOM для синтаксического анализатора Qt XML.
  • Модуль QtMultimedia реализует низкоуровневую мультимедийную функциональность. Разработчики приложений обычно используют модуль phonon .
  • Модуль QtDesigner содержит классы, которые позволяют расширять Qt Designer с помощью PyQt.
  • Модуль Qt объединяет классы, содержащиеся во всех модулях, описанных выше, в один модуль. Это имеет то преимущество, что вам не нужно беспокоиться о том, какой базовый модуль содержит конкретный класс. Его недостаток заключается в том, что он загружает всю структуру Qt, тем самым увеличивая объем памяти, занимаемый приложением. Независимо от того, используете ли вы этот консолидированный модуль или отдельные компоненты, зависит от вашего вкуса.
  • Модуль uic реализует поддержку обработки XML-файлов, созданных Qt Designer, которые описывают весь или часть графического пользовательского интерфейса. Он включает классы, которые загружают XML-файл и обрабатывают его напрямую, а также классы, которые генерируют код Python из XML-файла для последующего выполнения. [10]

PyQt5 содержит следующие модули Python:

  • Модуль QtQml
  • Модуль QtQtuick
  • Модуль QtCore
  • Модуль QtGui
  • Модуль QtPrintSupport
  • Модуль QtWidgets
  • Модуль QGLContext
  • Модуль QGLFormat
  • Модуль QGLWidget
  • Модуль QtWebKit
  • Модуль QtWebKitWidgets

Версии [ править ]

PyQt версии 4 работает как с Qt 4, так и с Qt 5 . PyQt версии 5 поддерживает только Qt версии 5, [4] и отказывается от поддержки функций, которые не рекомендуются в Qt 5. [11]

Пример Hello World [ править ]

В приведенном ниже коде показано небольшое окно на экране.

PyQt4 [ править ]

Результат в KDE Plasma 4
#! / usr / bin / env python3# Кодировка символов: UTF-8## Здесь мы обеспечиваем необходимый импорт.# Основные виджеты графического интерфейса расположены в модуле QtGui. import  sysиз  PyQt4.QtGui  импорт  QApplication ,  QWidget# Каждое приложение PyQt4 должно создавать объект приложения.# Объект приложения находится в модуле QtGui.приложение  =  QApplication ( SYS . ARGV )# Виджет QWidget - это базовый класс всех объектов пользовательского интерфейса в PyQt4.# Мы предоставляем конструктор по умолчанию для QWidget. Конструктор по умолчанию не имеет родителя.# Виджет без родителя называется окном. корень  =  QWidget ()корень . resize ( 320 ,  240 )  # Метод resize () изменяет размер виджета.корень . setWindowTitle ( "Hello, World!" )  # Здесь мы устанавливаем заголовок для нашего окна.корень . show ()  # Метод show () отображает виджет на экране.sys . exit ( app . exec_ ())  # Наконец, мы входим в основной цикл приложения.

PyQt5 [ править ]

#! / usr / bin / env python3# Кодировка символов: UTF-8## Здесь мы обеспечиваем необходимый импорт.# Основные виджеты GUI расположены в модуле QtWidgets. import  sysиз  PyQt5.QtWidgets  импортировать  QApplication ,  QWidget# Каждое приложение PyQt5 должно создавать объект приложения.# Объект приложения находится в модуле QtWidgets.приложение  =  QApplication ( SYS . ARGV )# Виджет QWidget - это базовый класс всех объектов пользовательского интерфейса в PyQt5.# Мы предоставляем конструктор по умолчанию для QWidget. Конструктор по умолчанию не имеет родителя.# Виджет без родителя называется окном. корень  =  QWidget ()корень . resize ( 320 ,  240 )  # Метод resize () изменяет размер виджета.корень . setWindowTitle ( "Hello, World!" )  # Здесь мы устанавливаем заголовок для нашего окна.корень . show ()  # Метод show () отображает виджет на экране.sys . exit ( app . exec_ ())  # Наконец, мы входим в основной цикл приложения.

Известные приложения, использующие PyQt [ править ]

  • Anki , программа для карточек с интервальным повторением
  • Caliber , приложение для управления электронными книгами
  • Dropbox , служба хостинга файлов
  • Эрик Python IDE
  • fman , кроссплатформенный файловый менеджер
  • Фрескобальди , редактор нот для музыкальных файлов LilyPond
  • Kodos , отладчик регулярных выражений Python
  • Лео , планировщик и грамотный редактор программирования
  • Ninja-IDE , расширяемая IDE Python с открытым исходным кодом
  • OpenLP , программа для проецирования текстов песен с открытым исходным кодом
  • OpenShot , программа для редактирования видео
  • Orange , фреймворк для интеллектуального анализа данных и визуализации
  • Puddletag , кроссплатформенный редактор тегов ID3 ​​с открытым исходным кодом.
  • QGIS , бесплатное настольное приложение для географических информационных систем (ГИС)
  • qt-recordMyDesktop , интерфейс Qt4 для recordMyDesktop
  • Spyder , IDE для обработки данных Python
  • TortoiseHg , графический интерфейс для программы управления исходным кодом Mercurial (Hg)
  • Veusz , приложение для научного построения графиков

См. Также [ править ]

PyQt - это один из вариантов Python для программирования с графическим интерфейсом. Популярными альтернативами являются PySide (привязка Qt с официальной поддержкой и более либеральной лицензией), PyGTK , wxPython , Kivy и Tkinter (который входит в комплект Python).

Ссылки [ править ]

  1. ^ https://pypi.org/project/PyQt5/#history
  2. ^ "PyQt4 Download" . Riverbankcomputing. 2010 . Проверено 19 апреля 2010 .
  3. ^ "Riverbank | Коммерческий | Часто задаваемые вопросы о лицензиях" . Riverbankcomputing.com . Проверено 24 июня 2015 .
  4. ^ a b "Что такое PyQt?" . Речные вычисления . Проверено 18 сентября 2014 .
  5. ^ «PyQt v4 - привязки Python для Qt v4» . Riverbankcomputing. Архивировано из оригинала на 2008-04-29 . Проверено 17 апреля 2010 .
  6. ^ "Описание класса QSqlDatabase" . Pyqt.sourceforge.net . Проверено 25 сентября 2014 .
  7. ^ PythonInfo Wiki
  8. ^ «Выпущен PySide - PySide - Python для Qt» . Pyside.org. 2009-08-18. Архивировано из оригинала на 2009-10-25 . Проверено 3 сентября 2009 .
  9. ^ «FAQ - PySide - Python для Qt» . Pyside.org . Проверено 3 сентября 2009 .
  10. ^ "Riverbank | Программное обеспечение | PyQt | Что такое PyQt?" . Riverbankcomputing.co.uk . Проверено 15 апреля 2010 .
  11. ^ «Различия между PyQt4 и PyQt5» , Справочное руководство PyQt 5.3.2

Дальнейшее чтение [ править ]

  • Уиллман, Джошуа (2020 г.), Начало PyQt - практический подход к программированию графического интерфейса пользователя (1-е изд.), Apress , стр. 440, ISBN 978-1-4842-5856-9
  • Саммерфилд, Марк (28 октября 2007 г.), Быстрое программирование графического интерфейса пользователя с помощью Python и Qt (охватывает PyQt4) (1-е изд.), Прентис Холл , стр. 648, ISBN 978-0-13-235418-9
  • Rempt, Boudewijn (2002), графический интерфейс программирования с Python: QT Edition (Covers PyQt3) , OpenDocs, архивируются с оригинала на 2010-04-09

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Вики Сообщества PyQt и PyKDE
  • PyQt5 Серия учебных пособий
  • Серия руководств PyQT4
  • Учебники
  • Руководство