Журнал фильтра правок

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

01:40, 23 сентября 2013: 103 «Ссылка» 95.153.165.170 (обсуждение) на странице PyQt, меры: Метка (просмотреть | изм.)

Изменения, сделанные в правке



== См. также ==
== См. также ==
* [http://ru.wikipedia.org/wiki/PySide PySide]
* [[PyGTK]]
* [[PyGTK]]
* [[PythonQt]]
* [[PythonQt]]

Параметры действия

ПеременнаяЗначение
Число правок участника ($1) (user_editcount)
null
Имя учётной записи ($1) (user_name)
'95.153.165.170'
Возраст учётной записи ($1) (user_age)
0
Группы (включая неявные) в которых состоит участник ($1) (user_groups)
[ 0 => '*' ]
Редактирует ли участник через мобильный интерфейс ($1) (user_mobile)
false
ID страницы ($1) (page_id)
1008770
Пространство имён страницы ($1) (page_namespace)
0
Название страницы (без пространства имён) ($1) (page_title)
'PyQt'
Полное название страницы ($1) (page_prefixedtitle)
'PyQt'
Последние десять редакторов страницы ($1) (page_recent_contributors)
[ 0 => 'WebCite Archiver', 1 => '195.24.234.161', 2 => '188.16.72.61', 3 => 'Addbot', 4 => 'РоманСузи', 5 => '213.141.141.43', 6 => '188.255.38.224', 7 => '213.208.181.150', 8 => 'Pavlovskteam', 9 => 'POPSuL' ]
Действие ($1) (action)
'edit'
Описание правки/причина ($1) (summary)
'/* См. также */ '
Была ли правка отмечена как «малое изменение» (больше не используется) (minor_edit)
false
Вики-текст старой страницы до правки ($1) (old_wikitext)
'{{Карточка программы | name = PyQt | logo = [[Файл:Python and Qt.svg|Python и Qt|160px]] | screenshot = [[Файл:Qt Designer (rus).png|Qt Designer|280px]] | caption = Qt Designer в Linux с [[KDE]] | developer = Riverbank Computing | genre = Привязка Qt для Python | language = | platform = | operating_system = [[Кроссплатформенное программное обеспечение|Кроссплатформенное]] | programming_language = [[C++]], Python{{нет АИ|7|08|2010}}<!--<ref name="осн.source" /><ref name="вики.cpp" /><ref name="вики.py" /> — подсчёт файлов с каким-то расширением не доказывает, на чём написана программа // AVB --> | latest_release_version = 5.0 | latest_release_date = [[17 июня]] [[2013]] | latest_preview_version = | latest_preview_date = | released = [[1998 год]] | license = [[GPL2]], [[GPL3]] и [[Проприетарное программное обеспечение|коммерческая]] | website = [http://www.riverbankcomputing.com/software/pyqt/intro riverbankcomputing.com] }} '''PyQt''' — набор «[[Привязка (программирование)|привязок]]» [[графический интерфейс пользователя|графического]] [[фреймворк]]а [[Qt]] для [[Язык программирования|языка программирования]] [[Python]], выполненный в виде [[Плагин|расширения]] Python. PyQt разработан [[Великобритания|британской]] компанией Riverbank Computing<ref name="nokia.rb" />. PyQt работает на всех платформах, поддерживаемых Qt: [[Linux]] и другие [[Unix-подобная операционная система|UNIX-подобные ОС]], [[Mac OS X]] и [[Windows]]. Существует 2 варианта: PyQt4, поддерживающий Qt 4, и устаревший PyQt3, поддерживающий Qt 3 и более ранние версии. 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 python # -*- 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() # даёт команду на отображение объекта формы и содержимого 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]] — графический симулятор сети. == Применение == PyQt — продукт, имеющий широкую пользовательскую базу. Среди коммерческих пользователей PyQt можно отметить такие известные корпорации, как [[Disney]], [[Dreamworks]], [[Pixar]], [[Industrial Light and Magic]] и [[Sony Pictures]]. Всего коммерческих пользователей более 200 (по данным в 2006 году)<ref name="интервью" />. == См. также == * [[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=http://www.webcitation.org/65uI4015X|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uI5zkoZ|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uI7uSIF|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uI9JyVD|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uICUwfJ|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMnGmU9|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMnrm5n|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMosJoa|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMpLuHw|archivedate=2012-03-04}}</ref> <ref name="осн.лиц">{{cite web|url=http://www.riverbankcomputing.co.uk/software/pyqt/license|title=License|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=http://www.webcitation.org/65uMpzkQx|archivedate=2012-03-04}}</ref> <ref name="pyside.faq">{{cite web|url=http://www.pyside.org/faq/|title=PySide FAQ|lang=en|publisher=Сайт PySide|accessdate=10 мая 2010|archiveurl=http://www.webcitation.org/65uMrB1Sw|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMsmDDY|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMtxbn4|archivedate=2012-03-04}}</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||archiveurl=http://www.webcitation.org/6HoWZe3iU|archivedate=2013-07-02}}</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 }} * {{книга |заглавие = Qt 4: Программирование GUI на C++. 2-е дополненное издание |автор = Ж. Бланшет, М. Саммерфилд. |isbn = 978-5-91136-059-7 |страницы = 736 |год = 2008 |место = М. |издательство = КУДИЦ-ПРЕСС }} == Ссылки == {{Навигация |Тема = PyQt |Портал = Свободное программное обеспечение |Викисловарь = |Викиверситет = |Викиучебник = |Викицитатник = |Викитека = |Викивиды = |Викиновости = |Викисклад = Category: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://www.youtube.com/watch?v=Ee8eRwjbcFk Создание браузера за 2 минуты (видео)] {{ref-en}} * [http://wiki.python.org/moin/PyQt#PyQtapplications Приложения, использующие PyQt] {{ref-en}} * [http://www.diotavelli.net/PyQtWiki/SomeExistingApplications Примеры программ, использующих PyQt] {{ref-en}} {{Qt}} {{Python}} {{FOSS}} {{Инструментарии виджетов}} [[Категория:PyQt| ]] [[Категория:Наборы привязок Qt для языков программирования]] [[Категория:Библиотеки Python]] [[Категория:Свободные библиотеки программ]] [[Категория:Программное обеспечение с лицензией GNU GPL]] [[Категория:Кроссплатформенное программное обеспечение]] [[Категория:Программное обеспечение для Linux]] [[Категория:Программное обеспечение для Mac OS X]] [[Категория:Программное обеспечение для Windows]] [[Категория:Свободное программное обеспечение, написанное на C++]] [[Категория:Свободное программное обеспечение, написанное на Python]] [[Категория:Статьи с примерами кода Python]] [[Категория:Появились в 1998 году]]'
Вики-текст новой страницы после правки ($1) (new_wikitext)
'{{Карточка программы | name = PyQt | logo = [[Файл:Python and Qt.svg|Python и Qt|160px]] | screenshot = [[Файл:Qt Designer (rus).png|Qt Designer|280px]] | caption = Qt Designer в Linux с [[KDE]] | developer = Riverbank Computing | genre = Привязка Qt для Python | language = | platform = | operating_system = [[Кроссплатформенное программное обеспечение|Кроссплатформенное]] | programming_language = [[C++]], Python{{нет АИ|7|08|2010}}<!--<ref name="осн.source" /><ref name="вики.cpp" /><ref name="вики.py" /> — подсчёт файлов с каким-то расширением не доказывает, на чём написана программа // AVB --> | latest_release_version = 5.0 | latest_release_date = [[17 июня]] [[2013]] | latest_preview_version = | latest_preview_date = | released = [[1998 год]] | license = [[GPL2]], [[GPL3]] и [[Проприетарное программное обеспечение|коммерческая]] | website = [http://www.riverbankcomputing.com/software/pyqt/intro riverbankcomputing.com] }} '''PyQt''' — набор «[[Привязка (программирование)|привязок]]» [[графический интерфейс пользователя|графического]] [[фреймворк]]а [[Qt]] для [[Язык программирования|языка программирования]] [[Python]], выполненный в виде [[Плагин|расширения]] Python. PyQt разработан [[Великобритания|британской]] компанией Riverbank Computing<ref name="nokia.rb" />. PyQt работает на всех платформах, поддерживаемых Qt: [[Linux]] и другие [[Unix-подобная операционная система|UNIX-подобные ОС]], [[Mac OS X]] и [[Windows]]. Существует 2 варианта: PyQt4, поддерживающий Qt 4, и устаревший PyQt3, поддерживающий Qt 3 и более ранние версии. 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 python # -*- 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() # даёт команду на отображение объекта формы и содержимого 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]] — графический симулятор сети. == Применение == PyQt — продукт, имеющий широкую пользовательскую базу. Среди коммерческих пользователей PyQt можно отметить такие известные корпорации, как [[Disney]], [[Dreamworks]], [[Pixar]], [[Industrial Light and Magic]] и [[Sony Pictures]]. Всего коммерческих пользователей более 200 (по данным в 2006 году)<ref name="интервью" />. == См. также == * [http://ru.wikipedia.org/wiki/PySide 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=http://www.webcitation.org/65uI4015X|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uI5zkoZ|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uI7uSIF|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uI9JyVD|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uICUwfJ|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMnGmU9|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMnrm5n|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMosJoa|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMpLuHw|archivedate=2012-03-04}}</ref> <ref name="осн.лиц">{{cite web|url=http://www.riverbankcomputing.co.uk/software/pyqt/license|title=License|lang=en|publisher=Сайт PyQt|accessdate=10 мая 2010|archiveurl=http://www.webcitation.org/65uMpzkQx|archivedate=2012-03-04}}</ref> <ref name="pyside.faq">{{cite web|url=http://www.pyside.org/faq/|title=PySide FAQ|lang=en|publisher=Сайт PySide|accessdate=10 мая 2010|archiveurl=http://www.webcitation.org/65uMrB1Sw|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMsmDDY|archivedate=2012-03-04}}</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=http://www.webcitation.org/65uMtxbn4|archivedate=2012-03-04}}</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||archiveurl=http://www.webcitation.org/6HoWZe3iU|archivedate=2013-07-02}}</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 }} * {{книга |заглавие = Qt 4: Программирование GUI на C++. 2-е дополненное издание |автор = Ж. Бланшет, М. Саммерфилд. |isbn = 978-5-91136-059-7 |страницы = 736 |год = 2008 |место = М. |издательство = КУДИЦ-ПРЕСС }} == Ссылки == {{Навигация |Тема = PyQt |Портал = Свободное программное обеспечение |Викисловарь = |Викиверситет = |Викиучебник = |Викицитатник = |Викитека = |Викивиды = |Викиновости = |Викисклад = Category: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://www.youtube.com/watch?v=Ee8eRwjbcFk Создание браузера за 2 минуты (видео)] {{ref-en}} * [http://wiki.python.org/moin/PyQt#PyQtapplications Приложения, использующие PyQt] {{ref-en}} * [http://www.diotavelli.net/PyQtWiki/SomeExistingApplications Примеры программ, использующих PyQt] {{ref-en}} {{Qt}} {{Python}} {{FOSS}} {{Инструментарии виджетов}} [[Категория:PyQt| ]] [[Категория:Наборы привязок Qt для языков программирования]] [[Категория:Библиотеки Python]] [[Категория:Свободные библиотеки программ]] [[Категория:Программное обеспечение с лицензией GNU GPL]] [[Категория:Кроссплатформенное программное обеспечение]] [[Категория:Программное обеспечение для Linux]] [[Категория:Программное обеспечение для Mac OS X]] [[Категория:Программное обеспечение для Windows]] [[Категория:Свободное программное обеспечение, написанное на C++]] [[Категория:Свободное программное обеспечение, написанное на Python]] [[Категория:Статьи с примерами кода Python]] [[Категория:Появились в 1998 году]]'
Унифицированная разница изменений правки ($1) (edit_diff)
'@@ -177,6 +177,7 @@ PyQt — продукт, имеющий широкую пользовательскую базу. Среди коммерческих пользователей PyQt можно отметить такие известные корпорации, как [[Disney]], [[Dreamworks]], [[Pixar]], [[Industrial Light and Magic]] и [[Sony Pictures]]. Всего коммерческих пользователей более 200 (по данным в 2006 году)<ref name="интервью" />. == См. также == +* [http://ru.wikipedia.org/wiki/PySide PySide] * [[PyGTK]] * [[PythonQt]] * [[Tkinter]] '
Новый размер страницы ($1) (new_size)
27649
Старый размер страницы ($1) (old_size)
27602
Изменение размера в правке ($1) (edit_delta)
47
Добавленные в правке строки ($1) (added_lines)
[ 0 => '* [http://ru.wikipedia.org/wiki/PySide PySide]' ]
Удалённые в правке строки ($1) (removed_lines)
[]
Была ли правка сделана через выходной узел сети Tor (tor_exit_node)
0
Unix-время изменения ($1) (timestamp)
1379900430