Просмотр отдельных изменений

Фильтры правок (обсуждение) — это автоматизированный механизм проверок правок участников.
(Список | Последние изменения фильтров | Изучение правок | Журнал срабатываний)
Перейти к навигации Перейти к поиску

Эта страница позволяет вам проверить переменные, сгенерированные фильтром злоупотреблений, на предмет отдельного изменения.

Переменные, созданные для этого изменения

ПеременнаяЗначение
Была ли правка отмечена как «малое изменение» (больше не используется) (minor_edit)
false
Имя учётной записи ($1) (user_name)
'2003:6:1186:6048:D07A:6960:E53A:4DAD'
Редактирует ли участник через мобильный интерфейс ($1) (user_mobile)
false
user_wpzero
false
ID страницы ($1) (page_id)
1008770
Пространство имён страницы ($1) (page_namespace)
0
Название страницы (без пространства имён) ($1) (page_title)
'PyQt'
Полное название страницы ($1) (page_prefixedtitle)
'PyQt'
Действие ($1) (action)
'edit'
Описание правки/причина ($1) (summary)
'/* Литература */ '
Старая модель содержимого ($1) (old_content_model)
'wikitext'
Новая модель содержимого ($1) (new_content_model)
'wikitext'
Вики-текст старой страницы до правки ($1) (old_wikitext)
'{{Карточка программы | name = PyQt | logo = Python and Qt.svg | screenshot = Qt Designer (rus).png | caption = Qt Designer в Linux с [[KDE]] | developer = Riverbank Computing | genre = Привязка Qt для Python | language = | platform = | operating_system = Мультиплатформенное ПО (Windows, MacOS, Unix) | programming_language = [[C++]], [[Python]]{{нет АИ|7|08|2010}}<!--<ref name="осн.source" /><ref name="вики.cpp" /><ref name="вики.py" /> — подсчёт файлов с каким-то расширением не доказывает, на чём написана программа // AVB --> | latest_release_version = 5.10.1 | latest_release_date = [[27 февраля]] [[2018]] | latest_preview_version = | latest_preview_date = | released = [[1998 год]] | license = [[GPL2]], [[GPL3]] и [[Проприетарное программное обеспечение|коммерческая]] | website = http://www.riverbankcomputing.com/software/pyqt/intro }} '''PyQt''' — набор «[[Привязка (программирование)|привязок]]» [[графический интерфейс пользователя|графического]] [[фреймворк]]а [[Qt]] для [[Язык программирования|языка программирования]] [[Python]], выполненный в виде [[Плагин|расширения]] Python. PyQt разработан [[Великобритания|британской]] компанией Riverbank Computing<ref name="nokia.rb" />. PyQt работает на всех платформах, поддерживаемых Qt: [[Linux]] и другие [[Unix-подобная операционная система|UNIX-подобные ОС]], [[Mac OS X]] и [[Windows]]. Существует 2 версии: PyQt5, поддерживающий Qt 5, и PyQt4, поддерживающий Qt 4. PyQt распространяется под лицензиями [[GPL]] (2 и 3 версии) и [[Проприетарное программное обеспечение|коммерческой]]<ref name="осн" />. PyQt практически полностью реализует возможности Qt. А это более 600 классов<ref name="осн.опис" />, более 6000 функций и методов, включая: * Существующий набор [[виджет]]ов графического интерфейса; * стили виджетов; * доступ к [[База данных|базам данных]] с помощью [[SQL]] ([[ODBC]], [[MySQL]], [[PostgreSQL]], [[Oracle (СУБД)|Oracle]]); * QScintilla, основанный на [[Scintilla]] виджет текстового редактора; * поддержку [[интернационализация|интернационализации]] (i18n); * [[парсер]] [[XML]]; * поддержку [[SVG]]; * интеграцию с [[WebKit]], движком рендеринга HTML; * поддержку воспроизведения видео и аудио. PyQt также включает в себя [[Qt Designer]] ([[Qt Creator]]) — дизайнер графического интерфейса пользователя. Программа pyuic генерирует Python код из файлов, созданных в Qt Designer. Это делает PyQt очень полезным инструментом для быстрого прототипирования. Кроме того, можно добавлять новые графические элементы управления, написанные на Python, в Qt Designer. Раньше PyQt поставлялся вместе со [[Интегрированная среда разработки|средой разработки]] [[Eric Python IDE|Eric]], написанной на PyQt. Eric имеет встроенный отладчик и может быть использована для создания консольных программ. Теперь она доступна в качестве отдельного проекта<ref name="eric" /><ref name="py.pyqt" /><ref name="py.pyqt4" />. == Обзор основных модулей == * ''QtCore'' — основные не графические классы: система сигналов и слотов, платформонезависимые абстракции для [[Unicode]], потоков, разделяемой памяти, [[Регулярные выражения|регулярных выражений]] и т. д. * ''QtGui'' — компоненты [[Графический интерфейс пользователя|графического интерфейса]] (элементы управления), основанные на визуальном представлении. * ''QtNetwork'' — классы для сетевого программирования. Например, клиентов и серверов через [[UDP]] и [[TCP]]. * ''QtOpenGL'' — классы, позволяющие использовать [[OpenGL]] и 3D-графику в приложениях PyQt. * ''QtScript'' — классы, позволяющие использовать встроенный в Qt интерпретатор [[JavaScript]] для управления приложением. * ''QtSql'' — классы для интеграции с базами данных с помощью SQL. * ''QtSvg'' — классы для отображения векторной графики в формате [[SVG]]. * ''QtXml'' — классы, реализующие обработку XML. * ''uic'' — реализация обработки XML-файлов, созданных в Qt Designer, для генерации из них Python-кода графического интерфейса<ref name="осн"/>. == Дизайнер графического интерфейса пользователя == [[Файл:Screenshot-qt-designer-qwebview.png|thumb|300px|Создание простого [[веб-браузер]]а перетаскиванием виджетов]] {{main|Qt Designer}} Qt Designer является кросс-платформенным компоновщиком макетов и форм графического интерфейса пользователя. Он позволяет быстро спроектировать виджеты и диалоги, используя экранные формы с использованием тех же виджетов, которые будут использоваться в приложении. Формы, созданные с Qt Designer, являются полностью функциональными, а также могут быть просмотрены в режиме реального времени<ref name="nokia.designer" />. == Примеры программ == === Программа [[Hello, world!]] === Стандартный минималистичный пример, дающий представление о PyQt. Программа показывает пустое окно, обладающее базовыми функциями — изменение размера, сворачивание, разворачивание: {| style="border-collapse:collapse; background:transparent" |<source lang="python"> #! /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_()) # запуск основного цикла приложения </source> |[[Файл:PyQt screen.png|frame|Результат выполнения программы в Linux с KDE]] |} === Более сложный пример === В этом примере показаны принципы создания более серьёзных программ. Используется Python 3 и Qt Designer. Применяется объектно-ориентированный подход, позволяющий разделить визуальное представление и логику программы. Состав программы: * ''test.pyw'' — главный файл, запускающий программу. * ''mainform.py'' — файл описания главного окна. * ''mainform.ui'' — файл, содержащий автоматически сгенерированное при помощи Qt Designer описание главного окна. В программе Qt Designer был создан проект, основанный на ''QDialog'' и выбраны 2 элемента: кнопка с именем ''pushButton'', текстовая метка с именем ''label''. Содержание файла ''test.pyw'': <source lang="python">#! /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())</source> Содержание файла ''mainform.py'': <source lang="python">#! /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")</source> [[Файл:PyQt screen2.png|frame|Результат выполнения программы в Windows XP]] В этом примере довольно простая функциональность, представленная методом ''setLabelText''. Однако при необходимости реализовать более сложную обработку поступающих данных, целесообразно вынести эту обработку в отдельный модуль (файл). == SIP == [[SIP (инструмент PyQt)|SIP]] — это инструмент для автоматической генерации Python-привязок к C и C++ библиотекам. Первоначально SIP был разработан в 1998 году для PyQt — Python-привязки для инструментария виджетов Qt, но подходит и для создания привязок к любым другим C или C++ библиотекам<ref name="sip.introduction" />. 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-класс<ref name="интервью" />. == Особенности лицензирования == Двойная [[Лицензия на программное обеспечение|лицензия]] PyQt продиктована довольно сложными отношениями в сфере применения этой надстройки (привязки) над графической библиотекой Qt. В соответствии с лицензией [[GPL]], возможно использование библиотеки для создания программ с [[Открытый исходный код|открытым исходным кодом]]. Если нет возможности распространять код в соответствии с условиями GPL, то можно приобрести коммерческую лицензию<ref name="осн.лиц" />. Со стороны [[Nokia]] были попытки договориться с Riverbank Computing на предмет смены лицензии, но они не увенчались успехом. В результате возник проект под названием [[PySide]]<ref name="pyside.faq" /> — аналог PyQt, в том числе сохраняющий совместимость с последним на уровне API, но выпущенный под лицензией [[LGPL]], чтобы дать возможность разработчикам и коммерческих проектов бесплатно использовать Python в связке с Qt. Однако Riverbank не исключает возможности лицензирования PyQt под LGPL в будущем. == История == Riverbank Computing Limited с 1998 года разрабатывает и поддерживает PyQt, привязки, которые позволяют использовать Qt для работы с языком программирования Python<ref name="nokia.rb" />. * Разработка началась с создания SIP и выпуска PyQt 0.1 с поддержкой Qt 1.41 в ноябре 1998<ref name="книга.rapid_gui"/>; * в версии 2.0, которая вышла в 2000, реализована поддержка Qt 2.2 на Linux и Windows<ref name="книга.rapid_gui"/>; * поддержка Qt 3 реализована в 2001<ref name="книга.rapid_gui"/>; * поддержка [[Mac OS X]] реализована в 2002<ref name="книга.rapid_gui"/>; * выпуск PyQt4 начался с PyQt 4.0 с поддержкой Qt 4 в июне 2006<ref name="книга.rapid_gui"/>; * в версии 4.5, которая вышла 5 июня 2009, реализована поддержка Python 3<ref name="осн.45" />; * в версии 4.7, которая вышла 14 января 2010, реализована поддержка Qt 4.6<ref name="осн.47" />; * в версии 5.0, которая вышла 17 июня 2013, реализована поддержка Qt 5.0<ref name="осн.50" />. == Известные программы, использующие PyQt == * [[Jabbim]] — кроссплатформенная открытая [[программа мгновенного обмена сообщениями]] по протоколу [[XMPP]]. * [[Eric Python IDE|Eric IDE]] — [[интегрированная среда разработки]] для Python; * [[Kodos]] — отладчик [[Регулярные выражения|регулярных выражений]] Python. * [[GNS3]] — графический симулятор сети. * [[Anki]] — программа для облегчения запоминания слов, выражений и любой другой информации с помощью интервальных повторений. == Применение == PyQt — продукт, имеющий широкую пользовательскую базу. Среди коммерческих пользователей PyQt можно отметить такие известные корпорации, как [[Disney]], [[Dreamworks]], [[Pixar]], [[Industrial Light and Magic]] и [[Sony Pictures]]. Всего коммерческих пользователей более 200 (по данным в 2006 году)<ref name="интервью" />. == См. также == * [[PySide]] * [[PyGTK]] * [[PythonQt]] * [[Tkinter]] == Примечания == {{примечания|refs= <!-- <ref name="осн.source">{{cite web|url=http://www.riverbankcomputing.com/static/Downloads/PyQt4/PyQt-win-gpl-4.7.3.zip|title=PyQt4 source|publisher=Сайт PyQt|date=|accessdate=10 мая 2010|lang=en|deadlink=404}}</ref> --> <ref name="nokia.rb">{{cite web|url=http://qt.nokia.com/services-partners/partners/partner-directory/riverbank-computing|title=Riverbank Computing|lang=en|publisher=Сайт [[Nokia]]|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI4015X?url=http://qt.nokia.com/partners|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн">{{cite web|url=http://www.riverbankcomputing.com/software/pyqt/intro|title=What is PyQt?|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI5zkoZ?url=http://www.riverbankcomputing.com/software/pyqt/intro|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.опис">{{cite web|url=http://www.riverbankcomputing.com/static/Docs/PyQt4/pyqt-whitepaper-a4.pdf|title=PyQt Whitepaper|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI7uSIF?url=http://www.riverbankcomputing.com/static/Docs/PyQt4/pyqt-whitepaper-a4.pdf|archivedate=2012-03-04|deadurl=yes}}</ref> <!-- <ref name="вики.cpp">Файлы с расширением [[.cpp]]</ref> --> <ref name="eric">{{cite web|url=http://eric-ide.python-projects.org/|title=The Eric Python IDE|lang=en|publisher=Сайт Eric IDE|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI9JyVD?url=http://eric-ide.python-projects.org/|archivedate=2012-03-04|deadurl=yes}}</ref> <!-- <ref name="вики.py">Файлы с расширением [[Python|.py]]</ref> --> <ref name="py.pyqt">{{cite web|url=http://wiki.python.org/moin/PyQt|title=About PyQt|lang=en|publisher=Python Wiki|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uICUwfJ?url=http://wiki.python.org/moin/PyQt|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="py.pyqt4">{{cite web|url=http://wiki.python.org/moin/PyQt4|title=PyQt4|lang=en|publisher=Python Wiki|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMnGmU9?url=http://wiki.python.org/moin/PyQt4|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="nokia.designer">{{cite web|url=http://qt.nokia.com/products/developer-tools/developer-tools?currentflipperobject=937ba3e952f85ef68ddbb7cb4b20fc19|title=GUI Designer|lang=en|publisher=[[Nokia]]|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMnrm5n?url=http://qt.nokia.com/products/developer-tools/developer-tools?currentflipperobject=937ba3e952f85ef68ddbb7cb4b20fc19|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="sip.introduction">{{cite web|url=http://www.riverbankcomputing.com/static/Docs/sip4/introduction.html|title=Introduction — SIP|publisher=Сайт PyQt|date=|accessdate=14 августа 2010|lang=en|archiveurl=https://www.webcitation.org/65uMosJoa?url=http://www.riverbankcomputing.com/static/Docs/sip4/introduction.html|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="интервью">{{cite web|url=http://dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt|title=Phil Thompson Talks About PyQt|publisher=KDE.news|date=|accessdate=13 августа 2010|lang=en|archiveurl=https://www.webcitation.org/65uMpLuHw?url=http://dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.лиц">{{cite web|url=http://www.riverbankcomputing.co.uk/software/pyqt/license|title=License|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMpzkQx?url=http://www.riverbankcomputing.co.uk/software/pyqt/license|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="pyside.faq">{{cite web|url=http://www.pyside.org/faq/|title=PySide FAQ|lang=en|publisher=Сайт PySide|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMrB1Sw?url=http://www.pyside.org/faq/|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="книга.rapid_gui">{{книга|автор=Mark Summerfield.|заглавие=Rapid GUI Programming with Python and Qt|ссылка=http://www.qtrac.eu/pyqtbook.html|издание=1st|издательство=Prentice Hall|год=2008|allpages=648|isbn=978-0132354189}}</ref> <ref name="осн.45">{{cite web|url=http://www.riverbankcomputing.com/news/pyqt-45|title=PyQt v4.5 Released|publisher=Сайт PyQt|date=|accessdate=10 мая 2010|lang=en|archiveurl=https://www.webcitation.org/65uMsmDDY?url=http://www.riverbankcomputing.com/news/pyqt-45|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.47">{{cite web|url=http://www.riverbankcomputing.com/news/pyqt-47|title=PyQt v4.7 Released|publisher=Сайт PyQt|date=|accessdate=10 мая 2010|lang=en|archiveurl=https://www.webcitation.org/65uMtxbn4?url=http://www.riverbankcomputing.com/news/pyqt-47|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.50">{{cite web|url=http://www.riverbankcomputing.com/news/pyqt-50|title=PyQt v5.0 Released|publisher=Сайт PyQt|date=|accessdate=2013-07-02|lang=en|7=|archiveurl=https://www.webcitation.org/6HoWZe3iU?url=http://www.riverbankcomputing.com/news/pyqt-50|archivedate=2013-07-02|deadurl=yes}}</ref> }} == Литература == * {{книга |заглавие = Python 3 и PyQt. Разработка приложений |автор = Прохоренок Н. А. |isbn = 978-5-9775-0797-4 |страницы = 704 |год = 2012 |место = СПб. |издательство = БХВ-Петербург }} * {{книга |заглавие = Qt 4.8 Профессиональное программирование на C++ |автор = Макс Шлее |isbn = 978-5-9775-0736-3 |страницы = 912 |год = 2012 |место = СПб. |издательство = «БХВ-Петербург» |ссылка = http://www.ozon.ru/context/detail/id/8752092/ }} * {{книга |автор = Mark Summerfield. |заглавие = Rapid GUI Programming with Python and Qt |ссылка = http://www.qtrac.eu/pyqtbook.html |издание = 1st |издательство = [[Prentice Hall]] |год = 2008 |pages = 648 |isbn = 978-0132354189 }} * {{книга |автор = Boudewijn Rempt. |заглавие = GUI Programming with Python: QT Edition |ссылка = http://www.commandprompt.com/community/pyqt/ |издательство = OpenDocs |год = 2002 |deadlink = да |archiveurl = https://web.archive.org/web/20100409074937/http://www.commandprompt.com/community/pyqt/ |archivedate = 2010-04-09 }} * {{книга |заглавие = Qt 4: Программирование GUI на C++. 2-е дополненное издание |автор = Ж. Бланшет, М. Саммерфилд. |isbn = 978-5-91136-059-7 |страницы = 736 |год = 2008 |место = М. |издательство = КУДИЦ-ПРЕСС }} == Ссылки == {{Навигация |Тема = PyQt |Портал = Свободное программное обеспечение |Викисловарь = |Викиверситет = |Викиучебник = |Викицитатник = |Викитека = |Викивиды = |Викиновости = |Метавики = }} * [http://www.riverbankcomputing.com/software/pyqt/intro Официальный сайт проекта] {{ref-en}} * [http://diotavelli.net/PyQtWiki Wiki сообщества PyQt и PyKDE] {{ref-en}} * [http://doc.qt.nokia.com/ Официальная документация по Qt] {{ref-en}} ** [http://doc.crossplatform.ru Неофициальная документация по Qt на русском] (перевод в процессе) {{ref-ru}} * [http://dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt Интервью с Филом Томпсоном — автором и разработчиком PyQt] {{ref-en}} * [http://wiki.python.org/moin/PyQt#PyQtapplications Приложения, использующие PyQt] {{ref-en}} * [https://pythonspot.com/pyqt4/ PyQT Tutorial]{{ref-en}} {{Qt}} {{Python}} {{FOSS}} {{Инструментарии виджетов}} [[Категория:PyQt| ]] [[Категория:Наборы привязок Qt для языков программирования]] [[Категория:Библиотеки Python]] [[Категория:Свободные библиотеки программ]] [[Категория:Программное обеспечение с лицензией GNU GPL]] [[Категория:Кросс-платформенное программное обеспечение]] [[Категория:Программное обеспечение для Linux]] [[Категория:Программное обеспечение для macOS]] [[Категория:Программное обеспечение для Windows]] [[Категория:Свободное программное обеспечение, написанное на C++]] [[Категория:Свободное программное обеспечение, написанное на Python]] [[Категория:Статьи с примерами кода Python]] [[Категория:Появились в 1998 году]]'
Вики-текст новой страницы после правки ($1) (new_wikitext)
'{{Карточка программы | name = PyQt | logo = Python and Qt.svg | screenshot = Qt Designer (rus).png | caption = Qt Designer в Linux с [[KDE]] | developer = Riverbank Computing | genre = Привязка Qt для Python | language = | platform = | operating_system = Мультиплатформенное ПО (Windows, MacOS, Unix) | programming_language = [[C++]], [[Python]]{{нет АИ|7|08|2010}}<!--<ref name="осн.source" /><ref name="вики.cpp" /><ref name="вики.py" /> — подсчёт файлов с каким-то расширением не доказывает, на чём написана программа // AVB --> | latest_release_version = 5.10.1 | latest_release_date = [[27 февраля]] [[2018]] | latest_preview_version = | latest_preview_date = | released = [[1998 год]] | license = [[GPL2]], [[GPL3]] и [[Проприетарное программное обеспечение|коммерческая]] | website = http://www.riverbankcomputing.com/software/pyqt/intro }} '''PyQt''' — набор «[[Привязка (программирование)|привязок]]» [[графический интерфейс пользователя|графического]] [[фреймворк]]а [[Qt]] для [[Язык программирования|языка программирования]] [[Python]], выполненный в виде [[Плагин|расширения]] Python. PyQt разработан [[Великобритания|британской]] компанией Riverbank Computing<ref name="nokia.rb" />. PyQt работает на всех платформах, поддерживаемых Qt: [[Linux]] и другие [[Unix-подобная операционная система|UNIX-подобные ОС]], [[Mac OS X]] и [[Windows]]. Существует 2 версии: PyQt5, поддерживающий Qt 5, и PyQt4, поддерживающий Qt 4. PyQt распространяется под лицензиями [[GPL]] (2 и 3 версии) и [[Проприетарное программное обеспечение|коммерческой]]<ref name="осн" />. PyQt практически полностью реализует возможности Qt. А это более 600 классов<ref name="осн.опис" />, более 6000 функций и методов, включая: * Существующий набор [[виджет]]ов графического интерфейса; * стили виджетов; * доступ к [[База данных|базам данных]] с помощью [[SQL]] ([[ODBC]], [[MySQL]], [[PostgreSQL]], [[Oracle (СУБД)|Oracle]]); * QScintilla, основанный на [[Scintilla]] виджет текстового редактора; * поддержку [[интернационализация|интернационализации]] (i18n); * [[парсер]] [[XML]]; * поддержку [[SVG]]; * интеграцию с [[WebKit]], движком рендеринга HTML; * поддержку воспроизведения видео и аудио. PyQt также включает в себя [[Qt Designer]] ([[Qt Creator]]) — дизайнер графического интерфейса пользователя. Программа pyuic генерирует Python код из файлов, созданных в Qt Designer. Это делает PyQt очень полезным инструментом для быстрого прототипирования. Кроме того, можно добавлять новые графические элементы управления, написанные на Python, в Qt Designer. Раньше PyQt поставлялся вместе со [[Интегрированная среда разработки|средой разработки]] [[Eric Python IDE|Eric]], написанной на PyQt. Eric имеет встроенный отладчик и может быть использована для создания консольных программ. Теперь она доступна в качестве отдельного проекта<ref name="eric" /><ref name="py.pyqt" /><ref name="py.pyqt4" />. == Обзор основных модулей == * ''QtCore'' — основные не графические классы: система сигналов и слотов, платформонезависимые абстракции для [[Unicode]], потоков, разделяемой памяти, [[Регулярные выражения|регулярных выражений]] и т. д. * ''QtGui'' — компоненты [[Графический интерфейс пользователя|графического интерфейса]] (элементы управления), основанные на визуальном представлении. * ''QtNetwork'' — классы для сетевого программирования. Например, клиентов и серверов через [[UDP]] и [[TCP]]. * ''QtOpenGL'' — классы, позволяющие использовать [[OpenGL]] и 3D-графику в приложениях PyQt. * ''QtScript'' — классы, позволяющие использовать встроенный в Qt интерпретатор [[JavaScript]] для управления приложением. * ''QtSql'' — классы для интеграции с базами данных с помощью SQL. * ''QtSvg'' — классы для отображения векторной графики в формате [[SVG]]. * ''QtXml'' — классы, реализующие обработку XML. * ''uic'' — реализация обработки XML-файлов, созданных в Qt Designer, для генерации из них Python-кода графического интерфейса<ref name="осн"/>. == Дизайнер графического интерфейса пользователя == [[Файл:Screenshot-qt-designer-qwebview.png|thumb|300px|Создание простого [[веб-браузер]]а перетаскиванием виджетов]] {{main|Qt Designer}} Qt Designer является кросс-платформенным компоновщиком макетов и форм графического интерфейса пользователя. Он позволяет быстро спроектировать виджеты и диалоги, используя экранные формы с использованием тех же виджетов, которые будут использоваться в приложении. Формы, созданные с Qt Designer, являются полностью функциональными, а также могут быть просмотрены в режиме реального времени<ref name="nokia.designer" />. == Примеры программ == === Программа [[Hello, world!]] === Стандартный минималистичный пример, дающий представление о PyQt. Программа показывает пустое окно, обладающее базовыми функциями — изменение размера, сворачивание, разворачивание: {| style="border-collapse:collapse; background:transparent" |<source lang="python"> #! /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_()) # запуск основного цикла приложения </source> |[[Файл:PyQt screen.png|frame|Результат выполнения программы в Linux с KDE]] |} === Более сложный пример === В этом примере показаны принципы создания более серьёзных программ. Используется Python 3 и Qt Designer. Применяется объектно-ориентированный подход, позволяющий разделить визуальное представление и логику программы. Состав программы: * ''test.pyw'' — главный файл, запускающий программу. * ''mainform.py'' — файл описания главного окна. * ''mainform.ui'' — файл, содержащий автоматически сгенерированное при помощи Qt Designer описание главного окна. В программе Qt Designer был создан проект, основанный на ''QDialog'' и выбраны 2 элемента: кнопка с именем ''pushButton'', текстовая метка с именем ''label''. Содержание файла ''test.pyw'': <source lang="python">#! /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())</source> Содержание файла ''mainform.py'': <source lang="python">#! /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")</source> [[Файл:PyQt screen2.png|frame|Результат выполнения программы в Windows XP]] В этом примере довольно простая функциональность, представленная методом ''setLabelText''. Однако при необходимости реализовать более сложную обработку поступающих данных, целесообразно вынести эту обработку в отдельный модуль (файл). == SIP == [[SIP (инструмент PyQt)|SIP]] — это инструмент для автоматической генерации Python-привязок к C и C++ библиотекам. Первоначально SIP был разработан в 1998 году для PyQt — Python-привязки для инструментария виджетов Qt, но подходит и для создания привязок к любым другим C или C++ библиотекам<ref name="sip.introduction" />. 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-класс<ref name="интервью" />. == Особенности лицензирования == Двойная [[Лицензия на программное обеспечение|лицензия]] PyQt продиктована довольно сложными отношениями в сфере применения этой надстройки (привязки) над графической библиотекой Qt. В соответствии с лицензией [[GPL]], возможно использование библиотеки для создания программ с [[Открытый исходный код|открытым исходным кодом]]. Если нет возможности распространять код в соответствии с условиями GPL, то можно приобрести коммерческую лицензию<ref name="осн.лиц" />. Со стороны [[Nokia]] были попытки договориться с Riverbank Computing на предмет смены лицензии, но они не увенчались успехом. В результате возник проект под названием [[PySide]]<ref name="pyside.faq" /> — аналог PyQt, в том числе сохраняющий совместимость с последним на уровне API, но выпущенный под лицензией [[LGPL]], чтобы дать возможность разработчикам и коммерческих проектов бесплатно использовать Python в связке с Qt. Однако Riverbank не исключает возможности лицензирования PyQt под LGPL в будущем. == История == Riverbank Computing Limited с 1998 года разрабатывает и поддерживает PyQt, привязки, которые позволяют использовать Qt для работы с языком программирования Python<ref name="nokia.rb" />. * Разработка началась с создания SIP и выпуска PyQt 0.1 с поддержкой Qt 1.41 в ноябре 1998<ref name="книга.rapid_gui"/>; * в версии 2.0, которая вышла в 2000, реализована поддержка Qt 2.2 на Linux и Windows<ref name="книга.rapid_gui"/>; * поддержка Qt 3 реализована в 2001<ref name="книга.rapid_gui"/>; * поддержка [[Mac OS X]] реализована в 2002<ref name="книга.rapid_gui"/>; * выпуск PyQt4 начался с PyQt 4.0 с поддержкой Qt 4 в июне 2006<ref name="книга.rapid_gui"/>; * в версии 4.5, которая вышла 5 июня 2009, реализована поддержка Python 3<ref name="осн.45" />; * в версии 4.7, которая вышла 14 января 2010, реализована поддержка Qt 4.6<ref name="осн.47" />; * в версии 5.0, которая вышла 17 июня 2013, реализована поддержка Qt 5.0<ref name="осн.50" />. == Известные программы, использующие PyQt == * [[Jabbim]] — кроссплатформенная открытая [[программа мгновенного обмена сообщениями]] по протоколу [[XMPP]]. * [[Eric Python IDE|Eric IDE]] — [[интегрированная среда разработки]] для Python; * [[Kodos]] — отладчик [[Регулярные выражения|регулярных выражений]] Python. * [[GNS3]] — графический симулятор сети. * [[Anki]] — программа для облегчения запоминания слов, выражений и любой другой информации с помощью интервальных повторений. == Применение == PyQt — продукт, имеющий широкую пользовательскую базу. Среди коммерческих пользователей PyQt можно отметить такие известные корпорации, как [[Disney]], [[Dreamworks]], [[Pixar]], [[Industrial Light and Magic]] и [[Sony Pictures]]. Всего коммерческих пользователей более 200 (по данным в 2006 году)<ref name="интервью" />. == См. также == * [[PySide]] * [[PyGTK]] * [[PythonQt]] * [[Tkinter]] == Примечания == {{примечания|refs= <!-- <ref name="осн.source">{{cite web|url=http://www.riverbankcomputing.com/static/Downloads/PyQt4/PyQt-win-gpl-4.7.3.zip|title=PyQt4 source|publisher=Сайт PyQt|date=|accessdate=10 мая 2010|lang=en|deadlink=404}}</ref> --> <ref name="nokia.rb">{{cite web|url=http://qt.nokia.com/services-partners/partners/partner-directory/riverbank-computing|title=Riverbank Computing|lang=en|publisher=Сайт [[Nokia]]|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI4015X?url=http://qt.nokia.com/partners|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн">{{cite web|url=http://www.riverbankcomputing.com/software/pyqt/intro|title=What is PyQt?|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI5zkoZ?url=http://www.riverbankcomputing.com/software/pyqt/intro|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.опис">{{cite web|url=http://www.riverbankcomputing.com/static/Docs/PyQt4/pyqt-whitepaper-a4.pdf|title=PyQt Whitepaper|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI7uSIF?url=http://www.riverbankcomputing.com/static/Docs/PyQt4/pyqt-whitepaper-a4.pdf|archivedate=2012-03-04|deadurl=yes}}</ref> <!-- <ref name="вики.cpp">Файлы с расширением [[.cpp]]</ref> --> <ref name="eric">{{cite web|url=http://eric-ide.python-projects.org/|title=The Eric Python IDE|lang=en|publisher=Сайт Eric IDE|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uI9JyVD?url=http://eric-ide.python-projects.org/|archivedate=2012-03-04|deadurl=yes}}</ref> <!-- <ref name="вики.py">Файлы с расширением [[Python|.py]]</ref> --> <ref name="py.pyqt">{{cite web|url=http://wiki.python.org/moin/PyQt|title=About PyQt|lang=en|publisher=Python Wiki|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uICUwfJ?url=http://wiki.python.org/moin/PyQt|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="py.pyqt4">{{cite web|url=http://wiki.python.org/moin/PyQt4|title=PyQt4|lang=en|publisher=Python Wiki|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMnGmU9?url=http://wiki.python.org/moin/PyQt4|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="nokia.designer">{{cite web|url=http://qt.nokia.com/products/developer-tools/developer-tools?currentflipperobject=937ba3e952f85ef68ddbb7cb4b20fc19|title=GUI Designer|lang=en|publisher=[[Nokia]]|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMnrm5n?url=http://qt.nokia.com/products/developer-tools/developer-tools?currentflipperobject=937ba3e952f85ef68ddbb7cb4b20fc19|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="sip.introduction">{{cite web|url=http://www.riverbankcomputing.com/static/Docs/sip4/introduction.html|title=Introduction — SIP|publisher=Сайт PyQt|date=|accessdate=14 августа 2010|lang=en|archiveurl=https://www.webcitation.org/65uMosJoa?url=http://www.riverbankcomputing.com/static/Docs/sip4/introduction.html|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="интервью">{{cite web|url=http://dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt|title=Phil Thompson Talks About PyQt|publisher=KDE.news|date=|accessdate=13 августа 2010|lang=en|archiveurl=https://www.webcitation.org/65uMpLuHw?url=http://dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.лиц">{{cite web|url=http://www.riverbankcomputing.co.uk/software/pyqt/license|title=License|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMpzkQx?url=http://www.riverbankcomputing.co.uk/software/pyqt/license|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="pyside.faq">{{cite web|url=http://www.pyside.org/faq/|title=PySide FAQ|lang=en|publisher=Сайт PySide|accessdate=10 мая 2010|archiveurl=https://www.webcitation.org/65uMrB1Sw?url=http://www.pyside.org/faq/|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="книга.rapid_gui">{{книга|автор=Mark Summerfield.|заглавие=Rapid GUI Programming with Python and Qt|ссылка=http://www.qtrac.eu/pyqtbook.html|издание=1st|издательство=Prentice Hall|год=2008|allpages=648|isbn=978-0132354189}}</ref> <ref name="осн.45">{{cite web|url=http://www.riverbankcomputing.com/news/pyqt-45|title=PyQt v4.5 Released|publisher=Сайт PyQt|date=|accessdate=10 мая 2010|lang=en|archiveurl=https://www.webcitation.org/65uMsmDDY?url=http://www.riverbankcomputing.com/news/pyqt-45|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.47">{{cite web|url=http://www.riverbankcomputing.com/news/pyqt-47|title=PyQt v4.7 Released|publisher=Сайт PyQt|date=|accessdate=10 мая 2010|lang=en|archiveurl=https://www.webcitation.org/65uMtxbn4?url=http://www.riverbankcomputing.com/news/pyqt-47|archivedate=2012-03-04|deadurl=yes}}</ref> <ref name="осн.50">{{cite web|url=http://www.riverbankcomputing.com/news/pyqt-50|title=PyQt v5.0 Released|publisher=Сайт PyQt|date=|accessdate=2013-07-02|lang=en|7=|archiveurl=https://www.webcitation.org/6HoWZe3iU?url=http://www.riverbankcomputing.com/news/pyqt-50|archivedate=2013-07-02|deadurl=yes}}</ref> }} == Литература == * {{книга |заглавие = Qt 5.10 Профессиональное программирование на C++ |автор = Макс Шлее |isbn = 978-5-9775-3678-3 |страницы = 1072 |год = 2018 |место = СПб. |издательство = БХВ-Петербург |ссылка = http://qt-book.com/book-qt-5-10/ }} * {{книга |заглавие = Python 3 и PyQt. Разработка приложений |автор = Прохоренок Н. А. |isbn = 978-5-9775-0797-4 |страницы = 704 |год = 2012 |место = СПб. |издательство = БХВ-Петербург }} * {{книга |заглавие = Qt 4.8 Профессиональное программирование на C++ |автор = Макс Шлее |isbn = 978-5-9775-0736-3 |страницы = 912 |год = 2012 |место = СПб. |издательство = «БХВ-Петербург» |ссылка = http://www.ozon.ru/context/detail/id/8752092/ }} * {{книга |автор = Mark Summerfield. |заглавие = Rapid GUI Programming with Python and Qt |ссылка = http://www.qtrac.eu/pyqtbook.html |издание = 1st |издательство = [[Prentice Hall]] |год = 2008 |pages = 648 |isbn = 978-0132354189 }} * {{книга |автор = Boudewijn Rempt. |заглавие = GUI Programming with Python: QT Edition |ссылка = http://www.commandprompt.com/community/pyqt/ |издательство = OpenDocs |год = 2002 |deadlink = да |archiveurl = https://web.archive.org/web/20100409074937/http://www.commandprompt.com/community/pyqt/ |archivedate = 2010-04-09 }} * {{книга |заглавие = Qt 4: Программирование GUI на C++. 2-е дополненное издание |автор = Ж. Бланшет, М. Саммерфилд. |isbn = 978-5-91136-059-7 |страницы = 736 |год = 2008 |место = М. |издательство = КУДИЦ-ПРЕСС }} == Ссылки == {{Навигация |Тема = PyQt |Портал = Свободное программное обеспечение |Викисловарь = |Викиверситет = |Викиучебник = |Викицитатник = |Викитека = |Викивиды = |Викиновости = |Метавики = }} * [http://www.riverbankcomputing.com/software/pyqt/intro Официальный сайт проекта] {{ref-en}} * [http://diotavelli.net/PyQtWiki Wiki сообщества PyQt и PyKDE] {{ref-en}} * [http://doc.qt.nokia.com/ Официальная документация по Qt] {{ref-en}} ** [http://doc.crossplatform.ru Неофициальная документация по Qt на русском] (перевод в процессе) {{ref-ru}} * [http://dot.kde.org/2006/08/08/phil-thompson-talks-about-pyqt Интервью с Филом Томпсоном — автором и разработчиком PyQt] {{ref-en}} * [http://wiki.python.org/moin/PyQt#PyQtapplications Приложения, использующие PyQt] {{ref-en}} * [https://pythonspot.com/pyqt4/ PyQT Tutorial]{{ref-en}} {{Qt}} {{Python}} {{FOSS}} {{Инструментарии виджетов}} [[Категория:PyQt| ]] [[Категория:Наборы привязок Qt для языков программирования]] [[Категория:Библиотеки Python]] [[Категория:Свободные библиотеки программ]] [[Категория:Программное обеспечение с лицензией GNU GPL]] [[Категория:Кросс-платформенное программное обеспечение]] [[Категория:Программное обеспечение для Linux]] [[Категория:Программное обеспечение для macOS]] [[Категория:Программное обеспечение для Windows]] [[Категория:Свободное программное обеспечение, написанное на C++]] [[Категория:Свободное программное обеспечение, написанное на Python]] [[Категория:Статьи с примерами кода Python]] [[Категория:Появились в 1998 году]]'
Была ли правка сделана через выходной узел сети Tor (tor_exit_node)
0
Unix-время изменения ($1) (timestamp)
1523603134