Evgenii Legotckoi
Evgenii LegotckoiҚыр. 3, 2016, 11:03 Т.Ж.

PyQt5 - 002-сабақ. PyQt5-тегі Hello World

Python — это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода, как говорит нам Википедия. А также активно используется для написания Web-приложений. Ну а для работы с Qt для Python была разработана компанией Riverbank Computing библиотека PyQt5, которая является набором "привязок" к библиотеке Qt5.

Из интереса, я решил написать небольшой Hello World с использованием PyQt5.

Установка

Первым делом устанавливаем Python, в моём случае это Python 3.5.2.

Для Windows можно скачать установочный пакет с официального сайта Python . Для Linux можем воспользоваться стандартным менеджером пакетов.

Далее необходимо установить PyQt5. В случае Linux можно либо установить с помощью стандартного менеджера пакетов. Например, для deb-based дистрибутивов:

sudo apt-get install python python3-pyqt5 pyqt5-dev-tools

Либо установить сначала утилиту pip для установки пакетов Python:

sudo apt-get install python-pip

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

pip install PyQt5

Для разработки на Python была выбрана IDE PyCharm.


Hello World

А теперь напишем небольшую программу на PyQt5, которая будет запускать окно приложения с надписью и иметь один пункт меню в панели меню. По клику на данный пункт будем закрывать приложение.

Полный текст программы

from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget, qApp, QAction
from PyQt5.QtCore import QSize


# Наследуемся от QMainWindow
class MainWindow(QMainWindow):
    # Переопределяем конструктор класса
    def __init__(self):
        # Обязательно нужно вызвать метод супер класса
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(480, 320))    # Устанавливаем размеры
        self.setWindowTitle("Hello world!!!")   # Устанавливаем заголовок окна
        central_widget = QWidget(self)          # Создаём центральный виджет
        self.setCentralWidget(central_widget)   # Устанавливаем центральный виджет

        grid_layout = QGridLayout(self)         # Создаём QGridLayout
        central_widget.setLayout(grid_layout)   # Устанавливаем данное размещение в центральный виджет

        title = QLabel("Hello World on the PyQt5", self)    # Создаём лейбл
        title.setAlignment(QtCore.Qt.AlignCenter)   # Устанавливаем позиционирование текста
        grid_layout.addWidget(title, 0, 0)          # и добавляем его в размещение

        exit_action = QAction("&Exit", self)    # Создаём Action с помощью которого будем выходить из приложения
        exit_action.setShortcut('Ctrl+Q')       # Задаём для него хоткей
        # Подключаем сигнал triggered к слоту quit у qApp.
        # синтаксис сигналов и слотов в PyQt5 заметно отличается от того,
        # который используется Qt5 C++
        exit_action.triggered.connect(qApp.quit)
        # Устанавливаем в панель меню данный Action.
        # Отдельного меню создавать пока не будем.
        file_menu = self.menuBar()
        file_menu.addAction(exit_action)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec())

Отличия

if name == " main ":

В приложениях на Python часто можно встретить следующую конструкцию:

if __name__ == "__main__":

С помощью данной конструкции можно указать Python-скрипту, какой программный код исполнять в том случае, если он запускается как самостоятельное приложение. В случае же, если данный скрипт будет импортирован в другой скрипт, то программный код, который будет следовать за данной конструкцией, не будет вызван.

Синтаксис сигналов и слотов

В PyQt5 используется следующий синтаксис сигналов и слотов, который показан на примере использования QAction.

exit_action = QAction("&Exit", self)    # Создаём Action с помощью которого будем выходить из приложения
exit_action.triggered.connect(qApp.quit)

Тогда как в Qt C++ тоже самое выглядело бы следующим образом:

QAction *exit = new QAction("&Exit", this);
connect(exit, &QAction::triggered, qApp, &QApplication::quit);

Python

Пожалуй, самое очевидное ;-)
Здесь без комментариев.

Заключение

В результате получим программу следующего вида.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

ИР
  • Мамыр 13, 2020, 2:58 Т.Ж.

Отлично получилось. Работает. Спс

ВР
  • Там. 17, 2021, 7:09 Т.Қ.

ImportError: cannot import name 'QtCore' from 'PyQt5' (unknown location)

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
m
  • molni99
  • Қаз. 26, 2024, 1:37 Т.Ж.

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:80ұпай,
  • Бағалау ұпайлары4
m
  • molni99
  • Қаз. 26, 2024, 1:29 Т.Ж.

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:20ұпай,
  • Бағалау ұпайлары-10

C++ - Тест 003. Условия и циклы

  • Нәтиже:42ұпай,
  • Бағалау ұпайлары-8
Соңғы пікірлер
i
innorwallҚар. 10, 2024, 9:03 Т.Ж.
Qt тілінде ойын қалай жазылады - 3-сабақ. Басқа объектілермен әрекеттесу priligy otc I routinely do not tell patients and or parents of patients with atopic dermatitis to avoid glutamates in food
i
innorwallҚар. 10, 2024, 4:31 Т.Ж.
QMYSQL драйверін құру (MariaDB) Windows 10 x64 QT 5.13.0 Mingw73_64 amazon priligy Conclusion This is the first study of the adverse effects of quetiapine ingestion by children under 7 years of age
i
innorwallҚар. 9, 2024, 11:14 Т.Қ.
ТОБЖ – Сабақ 002. Оптикалық талшық және оның түрлері can you buy priligy Uric acid reduction rectifies prehypertension in obese adolescents
i
innorwallҚар. 9, 2024, 8:59 Т.Қ.
Audiere кітапханасымен mp3 файлдарын ашу Cook meat all the way through priligy otc Note stages 2 3 AKI here exclude patients on dialysis, which are shown in a separate bar graph
Енді форумда талқылаңыз
i
innorwallҚар. 10, 2024, 8:22 Т.Ж.
добавить qlineseries в функции The information provided in Dosage Posology and method of administration of Tamoxifen Actavis is based on data of another medicine with exactly the same composition as the Tamoxifen Actavis …
9
9AnonimҚаз. 25, 2024, 9:10 Т.Ж.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Бізді әлеуметтік желілерде бақылаңыз