Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

PyQt
Логотип программы PyQt
Скриншот программы PyQt

Qt Designer в Linux с KDE Plasma 5
Тип Привязка Qt для Python
Разработчик Riverbank Computing
Написана на C++, Python
Операционная система Мультиплатформенное ПО (Windows, MacOS, Unix)
Первый выпуск 1998 год
Последняя версия
Лицензия GPL2, GPL3 и коммерческая
Сайт riverbankcomputing.com/s…
Логотип Викисклада Медиафайлы на Викискладе

PyQt — набор расширений (биндингов) графического фреймворка Qt для языка программирования Python, выполненный в виде расширения Python.

PyQt разработан британской компанией Riverbank Computing[2]. PyQt работает на всех платформах, поддерживаемых Qt: Linux и другие UNIX-подобные ОС, macOS и Windows. Существует 3 версии: PyQt6, PyQt5 и PyQt4, поддерживающие соответствующие версии Qt. PyQt распространяется под лицензиями GPL (2 и 3 версии) и коммерческой[3].

PyQt практически полностью реализует возможности Qt. Это более 600 классов[4], более 6000 функций и методов, включая:

PyQt также включает в себя Qt Designer (Qt Creator) — дизайнер графического интерфейса пользователя. Программа pyuic генерирует Python код из файлов, созданных в Qt Designer. Это делает PyQt очень полезным инструментом для быстрого прототипирования. Кроме того, можно добавлять новые графические элементы управления, написанные на Python, в Qt Designer.

Раньше PyQt поставлялся вместе со средой разработки Eric, написанной на PyQt. Eric имеет встроенный отладчик и может быть использована для создания консольных программ. Теперь она доступна в качестве отдельного проекта[5][6][7].

Обзор основных модулей

  • QtCore — основные не графические классы: система сигналов и слотов, платформонезависимые абстракции для Unicode, потоков, разделяемой памяти, регулярных выражений и т. д.
  • QtGui — компоненты графического интерфейса (элементы управления), основанные на визуальном представлении.
  • QtNetwork — классы для сетевого программирования. Например, клиентов и серверов через UDP и TCP.
  • QtOpenGL — классы, позволяющие использовать OpenGL и 3D-графику в приложениях PyQt.
  • QtScript — классы, позволяющие использовать встроенный в Qt интерпретатор JavaScript для управления приложением.
  • QtSql — классы для интеграции с базами данных с помощью SQL.
  • QtSvg — классы для отображения векторной графики в формате SVG.
  • QtXml — классы, реализующие обработку XML.
  • uic — реализация обработки XML-файлов, созданных в Qt Designer, для генерации из них Python-кода графического интерфейса[3].

Дизайнер графического интерфейса пользователя

Создание простого веб-браузера перетаскиванием виджетов

Qt Designer является кроссплатформенным компоновщиком макетов и форм графического интерфейса пользователя. Он позволяет быстро спроектировать виджеты и диалоги, используя экранные формы с использованием тех же виджетов, которые будут использоваться в приложении. Формы, созданные с Qt Designer, являются полностью функциональными, а также могут быть просмотрены в режиме реального времени[8].

Примеры программ

Программа Hello, world!

Стандартный минималистичный пример, дающий представление о PyQt. Программа показывает пустое окно, обладающее базовыми функциями — изменение размера, сворачивание, разворачивание:

Результат выполнения программы в Linux с KDE
#! /usr/bin/env python2
# -*- coding: utf-8 -*-
#
import sys
from PyQt4.QtGui import * # компоненты интерфейса

# Каждое приложение должно создать объект QApplication
# sys.argv - список аргументов командной строки
application = QApplication(sys.argv)

# QWidget - базовый класс для всех объектов интерфейса
# пользователя; если использовать для виджета конструктор
# без родителя, такой виджет станет окном
widget = QWidget()

widget.resize(320, 240) # изменить размеры виджета
widget.setWindowTitle("Hello, World!") # установить заголовок
widget.show() # отобразить окно на экране

sys.exit(application.exec_()) # запуск основного цикла приложения

Более сложный пример

В этом примере показаны принципы создания более серьёзных программ. Используется Python 3 и Qt Designer. Применяется объектно-ориентированный подход, позволяющий разделить визуальное представление и логику программы.

Состав программы:

  • test.pyw — главный файл, запускающий программу.
  • mainform.py — файл описания главного окна.
  • mainform.ui — файл, содержащий автоматически сгенерированное при помощи Qt Designer описание главного окна. В программе Qt Designer был создан проект, основанный на QDialog и выбраны 2 элемента: кнопка с именем pushButton, текстовая метка с именем label.

Содержание файла test.pyw:

#! /usr/bin/env python3
#
import sys
from PyQt4 import QtCore, QtGui # подключает основные модули PyQt
import mainform # подключает модуль описания формы

def main():
    app = QtGui.QApplication(sys.argv)  # создаёт основной объект программы
    form = mainform.MainForm()  # создаёт объект формы
    form.show()  # даёт команду на отображение объекта формы и содержимого
    return app.exec()  # запускает приложение

if __name__ == "__main__":
    sys.exit(main())

Содержание файла mainform.py:

#! /usr/bin/env python3
#
from PyQt4 import QtCore, QtGui, uic # подключает основные модули PyQt

# прототип главной формы
class MainForm(QtGui.QDialog):

    # конструктор
    def __init__(self):
        super(MainForm, self).__init__()

        # динамически загружает визуальное представление формы
        uic.loadUi("mainform.ui", self)

        # связывает событие нажатия на кнопку с методом
        self.connect(self.pushButton, QtCore.SIGNAL("clicked()"),
            self.setLabelText)

    def setLabelText(self):
        self.label.setText("New label text")
Результат выполнения программы в Windows XP

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

SIP

SIP — это инструмент для автоматической генерации Python-привязок к C и C++ библиотекам. Первоначально SIP был разработан в 1998 году для PyQt — Python-привязки для инструментария виджетов Qt, но подходит и для создания привязок к любым другим C или C++ библиотекам[9].

SIP берёт набор инструкций (.sip файлы), описывающих API и генерирует требуемый C++ код. Потом он компилируется и на выходе получается модуль Python. Файлы .sip — файлы заголовков класса, у которых кое-что убрано (потому что SIP не содержит полноценный C++-парсер) и кое-что добавлено (поскольку C++ не несёт достаточной информации о работе API).

Для PyQt4 используется внутренний инструмент (написанный на PyQt), называемый metasip. Это своего рода IDE для SIP. Он использует GCC-XML для разбора заголовочных файлов последней версии и сохраняет релевантные данные в XML, в metasip-проект. metasip далее делает некое подобие diff с предыдущей версией API и отмечает все изменения, которые необходимо просмотреть. Затем список изменений генерируется при помощи GUI и автоматически заносится в TODO. Создание .sip файлов — просто нажатие на кнопку.

Что касается работы сгенерированного кода, она не сильно отличается от работы любого другого генератора привязок. У Python очень хороший API модулей — это одна из причин большого количества Python-привязок для инструментов сторонних разработчиков. Для каждого C++-класса SIP генерирует C-код, создающий соответствующий Python-класс[10].

Особенности лицензирования

Двойная лицензия PyQt продиктована довольно сложными отношениями в сфере применения этой надстройки (привязки) над графической библиотекой Qt. В соответствии с лицензией GPL, возможно использование библиотеки для создания программ с открытым исходным кодом. Если нет возможности распространять код в соответствии с условиями GPL, то можно приобрести коммерческую лицензию[11].

Со стороны Nokia были попытки договориться с Riverbank Computing на предмет смены лицензии, но они не увенчались успехом. В результате возник проект под названием PySide[12] — аналог PyQt, в том числе сохраняющий совместимость с последним на уровне API, но выпущенный под лицензией LGPL, чтобы дать возможность разработчикам и коммерческих проектов бесплатно использовать Python в связке с Qt.

Однако Riverbank не исключает возможности лицензирования PyQt под LGPL в будущем.

История

Riverbank Computing Limited с 1998 года разрабатывает и поддерживает PyQt, привязки, которые позволяют использовать Qt для работы с языком программирования Python[2].

  • Разработка началась с создания SIP и выпуска PyQt 0.1 с поддержкой Qt 1.41 в ноябре 1998[13];
  • в версии 2.0, которая вышла в 2000, реализована поддержка Qt 2.2 на Linux и Windows[13];
  • поддержка Qt 3 реализована в 2001[13];
  • поддержка Mac OS X реализована в 2002[13];
  • выпуск PyQt4 начался с PyQt 4.0 с поддержкой Qt 4 в июне 2006[13];
  • в версии 4.5, которая вышла 5 июня 2009, реализована поддержка Python 3[14];
  • в версии 4.7, которая вышла 14 января 2010, реализована поддержка Qt 4.6[15];
  • в версии 5.0, которая вышла 17 июня 2013, реализована поддержка Qt 5.0[16].

Известные программы, использующие PyQt

  • Cura[17] — приложение нарезки 3D-модели для 3D-принтеров с открытым исходным кодом.
  • Electrum[18] — популярный open-source Bitcoin криптокошелек.
  • Arduino IDE — реализация Arduino на PyQt.
  • Jabbim — кроссплатформенная открытая программа мгновенного обмена сообщениями по протоколу XMPP.
  • Eric IDE — интегрированная среда разработки для Python;
  • GNS3 — графический симулятор сети.
  • Anki — программа для облегчения запоминания слов, выражений и любой другой информации с помощью интервальных повторений.
  • Calibre — приложение для управления электронными книгами
  • Dropbox — файлообменник
  • fman — кроссплатформенный файловый менеджер
  • Kodos — отладчик регулярных выражений Python
  • Leo — планировщик и редактор грамотного программирования
  • Ninja-IDE — расширяемая среда разработки Python с открытым исходным кодом
  • OpenLP — программа проекции текстов с открытым исходным кодом
  • OpenShot — программа для редактирования видео
  • Orange — структура интеллектуального анализа данных и визуализации
  • Puddletag — кроссплатформенный редактор тегов ID3 с открытым исходным кодом
  • QGIS — бесплатное программное обеспечение для настольных ГИС-систем
  • qt-recordMyDesktop, Интерфейс Qt4 для recordMyDesktop
  • Spyder — Python Data Science IDE
  • TortoiseHg — графический интерфейс для программы управления источниками Mercurial (Hg)
  • Veusz — научное приложение для черчения
  • qutebrowser[19] — Vim-like веб-браузер с минималистичным интерфейсом.

Применение

PyQt — продукт, имеющий широкую пользовательскую базу. Среди коммерческих пользователей PyQt можно отметить такие известные корпорации, как Disney, Dreamworks, Pixar, Industrial Light and Magic и Sony Pictures. Всего коммерческих пользователей более 200 (по данным в 2006 году)[10].

См. также

Примечания

  1. https://www.riverbankcomputing.com/news/PyQt_v6.6.0_Released
  2. 1 2 Riverbank Computing (англ.). Сайт Nokia. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  3. 1 2 What is PyQt? (англ.). Сайт PyQt. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  4. PyQt Whitepaper (англ.). Сайт PyQt. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  5. The Eric Python IDE (англ.). Сайт Eric IDE. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  6. About PyQt (англ.). Python Wiki. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  7. PyQt4 (англ.). Python Wiki. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  8. GUI Designer (англ.). Nokia. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  9. Introduction — SIP (англ.). Сайт PyQt. Дата обращения: 14 августа 2010. Архивировано 4 марта 2012 года.
  10. 1 2 Phil Thompson Talks About PyQt (англ.). KDE.news. Дата обращения: 13 августа 2010. Архивировано 4 марта 2012 года.
  11. License (англ.). Сайт PyQt. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  12. PySide FAQ (англ.). Сайт PySide. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  13. 1 2 3 4 5 Mark Summerfield. Rapid GUI Programming with Python and Qt. — 1st. — Prentice Hall, 2008. — 648 p. — ISBN 978-0132354189. Архивировано 31 марта 2009 года.
  14. PyQt v4.5 Released (англ.). Сайт PyQt. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  15. PyQt v4.7 Released (англ.). Сайт PyQt. Дата обращения: 10 мая 2010. Архивировано 4 марта 2012 года.
  16. PyQt v5.0 Released (англ.). Сайт PyQt. Дата обращения: 2 июля 2013. Архивировано 2 июля 2013 года.
  17. Ultimaker Cura GitHub. Дата обращения: 28 мая 2020. Архивировано 17 сентября 2020 года.
  18. Electrum Bitcoin GitHub. Дата обращения: 28 мая 2020. Архивировано 10 мая 2020 года.
  19. qutebrowser. Дата обращения: 20 декабря 2021. Архивировано 20 декабря 2021 года.

Литература

Ссылки

Эта страница в последний раз была отредактирована 21 сентября 2023 в 17:59.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).