Как создать простое приложение PyQt в Python

В этом уроке мы создадим простое приложение PyQt, которое отображает сообщение Hello World в Python.

Содержание

Установка пакета PyQt

PyQt — это привязка Python к кроссплатформенному прикладному инструменту Qt. Поскольку PyQt — это сторонний пакет, перед использованием его необходимо установить.

PyQt6 — последняя версия PyQt на момент написания этого руководства. Чтобы установить PyQt6 с помощью PyPI в Windows, используйте следующую команду pip:

pip install PyQt6

Если вы используете macOS или Linux, вам необходимо использовать команду pip3:

pip3 install PyQt6

Создание первой PyQt-программы

Следующая программа выводит на экран окно с заголовком Hello World:

from PyQt6.QtWidgets import QApplication, QWidget

# create the QApplication
app = QApplication([])

# create the main window
window = QWidget(windowTitle='Hello World')
window.show()

# start the event loop
app.exec()

Для запуска приложения используйте команду python:

python main.py

Если вы используете macOS или Linux, вы можете использовать команду python3:

python3 main.py

Ниже показано окно:

Пример создания PyQt-программы

Как это работает.

  • Сначала импортируйте классы QApplication и QMainWidget из PyQt6.Widgets:
from PyQt6.QtWidgets import QApplication, QWidget
  • Во-вторых, создайте объект QApplication:
app = QApplication(sys.argv)

Каждому приложению PyQt требуется один и только один объект QApplication.

  • В-третьих, создайте новый экземпляр QWidget с заголовком «Hello World» и вызовите метод show() для отображения окна:
window = QWidget(windowTitle='Hello World')
window.show()
  • Наконец, вызовите метод exec() экземпляра QMainApplication, чтобы запустить цикл событий:
app.exec()

Введение в цикл событий

Каждому приложению PyQt нужен один экземпляр класса QApplication. Объект QApplication содержит цикл событий приложения. Цикл событий отвечает за управление всеми событиями приложения, включая взаимодействие пользователя с графическим интерфейсом.

Когда вы взаимодействуете с приложением Qt, например, нажимая клавишу или кнопку, PyQt генерирует событие и помещает его в очередь событий.

Цикл событий постоянно проверяет очередь событий. Если цикл событий находит событие, он пересылает его определенному обработчику событий. Обработчик событий обрабатывает событие и передает управление обратно в цикл событий для обработки следующих событий.

На следующем рисунке показано, как работает цикл событий:

Цикл событий PyQt

Обратите внимание, что каждое приложение PyQt имеет один и только один цикл событий.

Поддержка аргумента командной строки и кода возврата

Программа PyQt может принимать один или несколько аргументов командной строки. Чтобы включить это, вам нужно передать argv из модуля sys в QApplication следующим образом:

app = QApplication(sys.argv)

App.exec() возвращает 0 в случае успеха или другое значение в случае неудачи.

Если программа PyQt запускается из оболочки, т. е. из командной строки в Windows или из терминала в macOS и Linux, она должна вернуть код, указывающий на успешное или неудачное выполнение программы.

Для этого необходимо вызвать функцию sys.exit() и передать ей результат app.exec() следующим образом:

sys.exit(app.exec())

Сделав это, Shell может получить код возврата от приложения PyQt.

Ниже показана пересмотренная программа Hello World:

import sys
from PyQt6.QtWidgets import QApplication, QWidget


# create the QApplication
app = QApplication(sys.argv)

# create the main window
window = QWidget(windowTitle='Hello World')
window.show()

# start the event loop
sys.exit(app.exec())

Создание шаблона программы Qt

Ниже показана PyQt Hello World в объектно-ориентированном виде:

Обратите внимание: если вы не знакомы с объектно-ориентированным программированием, вы можете воспользоваться руководством по ООП в Python.

import sys
from PyQt6.QtWidgets import QApplication, QWidget


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        
        # set the window title
        self.setWindowTitle('Hello World')
        
        # show the window
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    # create the main window
    window = MainWindow()

    # start the event loop
    sys.exit(app.exec())

Как это работает.

  • Сначала определите класс MainWindow, который наследуется от QWiget:
class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        
        # set the window title
        self.setWindowTitle('Hello World')
        
        # show the window
        self.show()

В методе __init__() мы задаем заголовок окна и вызываем метод show() для отображения окна.

  • Далее добавьте блок if __name__ == ‘__main__’, чтобы включить код, если программа выполняется напрямую. Если скрипт импортируется как модуль, код в этом блоке не будет выполнен.
if __name__ == '__main__':
  • Затем создайте объект QApplication:
app = QApplication(sys.argv)
  • После этого создайте новый экземпляр MainWindow:
window = MainWindow()
  • Наконец, запустите цикл событий:
sys.exit(app.exec())
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *