PyQt - набор «привязок» графического фреймворка Qt
PyQt — набор «привязок» графического фреймворка Qt для языка программирования Python, выполненный в виде расширения Python.
PyQt разработан британской компанией Riverbank Computing. PyQt работает на всех платформах, поддерживаемых Qt: GNU/Linux и другие UNIX-подобные ОС, Mac OS X и Windows. Существует 2 варианта: PyQt4, поддерживающий Qt 4 и устаревший PyQt3, поддерживающий Qt 3 и более ранние версии. PyQt распространяется под лицензиями GPL (2 и 3 версии) и коммерческой.
PyQt практически полностью реализует возможности Qt. А это более 600 классов, более 6000 функций и методов, включая:
- Существующий набор виджетов графического интерфейса;
- стили виджетов;
- доступ к базам данных с помощью SQL (ODBC, MySQL, PostgreSQL, Oracle);
- QScintilla, основанный на Scintilla виджет текстового редактора;
- поддержку интернационализации (i18n);
- парсер XML;
- поддержку SVG;
интеграцию с WebKit, движком рендеринга HTML;
- поддержку воспроизведения видео и аудио.
PyQt также включает в себя Qt Designer (Qt Creator) — дизайнер графического интерфейса пользователя. Программа pyuic генерирует Python код из файлов, созданных в Qt Designer. Это делает PyQt очень полезным инструментом для быстрого прототипирования. Кроме того, можно добавлять новые графические элементы управления, написанные на Python, в Qt Designer. Раньше PyQt поставлялся вместе со средой разработки Eric, написанной на PyQt. Eric имеет встроенный отладчик и может быть использована для создания консольных программ. Теперь она доступна в качестве отдельного проекта.
Пример: программа Hello World
1 #!/usr/bin/python
2
3 import sys
4 from PyQt4 import QtGui, QtCore
5
6 class mainWindow(QtGui.QWidget):
7 def __init__(self, parent=None):
8 QtGui.QWidget.__init__(self, parent)
9
10 self.setWindowTitle('PyQt4 example')
11 self.helloButton = QtGui.QPushButton(self.tr("&Hello"))
12 self.closeButton = QtGui.QPushButton(self.tr("&Close"))
13 vbox = QtGui.QVBoxLayout()
14 vbox.addWidget(self.helloButton)
15 vbox.addWidget(self.closeButton)
16 self.setLayout(vbox)
17 self.resize(250, 150)
18
19 self.connect(self.helloButton, QtCore.SIGNAL("clicked()"), self.helloClicked)
20 self.connect(self.closeButton, QtCore.SIGNAL("clicked()"), QtCore.SLOT('close()'))
21
22 def helloClicked(self):
23 QtGui.QMessageBox.information(self, self.windowTitle(), 'Hello, World!')
24
25 if __name__=="__main__":
26 app = QtGui.QApplication(sys.argv)
27 window = mainWindow()
28 window.show()
29 sys.exit(app.exec_())