На этом шаге мы рассмотрим алгоритм такого преобразования способы подключения преобразованного файла.
Вместо подключения ui-файла можно сгенерировать на его основе программный код на языке Python. Для этого служит утилита pyuic5.bat, расположенная в каталоге C:\Python34\Lib\site-packages\PyQt5. Запустим командную строку и перейдем в каталог, в котором находится ui-файл. Для генерации Python-программы выполним команду:
pyuic5.bat MyForm.ui -о ui_MyForm.py
В результате будет создан файл ui_MyForm.py, который мы уже можем подключить с помощью инструкции import. Внутри файла находится класс uiMyForm с двумя методами: setupUi() и retranslated(). При использовании процедурного стиля программирования следует создать экземпляр класса формы, а затем вызвать метод setupUi() и передать ему ссылку на экземпляр окна:
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets import sys, ui_MyForm app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() ui = ui_MyForm.Ui_MyForm() ui.setupUi(window) ui.btnQuit.clicked.connect(QtWidgets.qApp.quit) window.show() sys.exit(app.exec_())
При использовании ООП-стиля программирования следует создать экземпляр класса формы, а затем вызвать метод setupUi() и передать ему указатель self.
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets import ui_MyForm class MyWindow(QtWidgets.QWidget): def __init__(self, parent = None): QtWidgets.QWidget.__init__(self, parent) self.ui = ui_MyForm.Ui_MyForm() self.ui.setupUi(self) self.ui.btnQuit.clicked.connect(QtWidgets.qApp.quit) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_())
Класс формы можно указать во втором параметре в списке наследования - в этом случае он унаследует все методы класса формы.
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets import ui_MyForm class MyWindow(QtWidgets.QWidget, ui_MyForm.Ui_MyForm): def __init__(self, parent = None): QtWidgets.QWidget.__init__(self, parent) self.setupUi(self) self.btnQuit.clicked.connect(QtWidgets.qApp.quit) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_())
Как видите, и в PyQt можно создавать формы, размещать компоненты с помощью мыши, а затем непосредственно подключать ui-файлы в программе или преобразовывать их в Python-код с помощью утилиты pyuic5.bat, - все это очень удобно. Тем не менее, чтобы полностью овладеть программированием на PyQt, необходимо уметь создавать код вручную. Поэтому в дальнейшем мы больше не станем задействовать программу Qt Designer.
На следующем шаге мы рассмотрим модули PyQt5.