Evgenii Legotckoi
Evgenii Legotckoi3. September 2016 11:03

PyQt5 - Lektion 002. Hallo Welt auf PyQt5

Python ist eine allgemeine Programmiersprache auf hohem Niveau, die sich auf die Verbesserung der Entwicklerproduktivität und der Codelesbarkeit konzentriert, wie Wikipedia uns sagt. Es wird auch aktiv zum Schreiben von Webanwendungen verwendet. Nun, für die Arbeit mit Qt für Python wurde die PyQt5-Bibliothek von Riverbank Computing entwickelt, die eine Reihe von "Bindungen" an die Qt5-Bibliothek ist.

Aus Interesse habe ich mich entschieden, eine kleine Hello World mit PyQt5 zu schreiben.

Installation

Der erste Schritt ist die Installation von Python, in meinem Fall ist es Python 3.5.2.

Für Windows können Sie das Installationspaket von der offiziellen Python-Website herunterladen. Für Linux können wir den Standard-Paketmanager verwenden.

Als nächstes müssen Sie PyQt5 installieren. Bei Linux können Sie die Installation entweder mit dem Standardpaketmanager durchführen. Beispiel für deb-basierte Verteilungen:

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

Oder installieren Sie zuerst das Dienstprogramm pip , um Python-Pakete zu installieren:

sudo apt-get install python-pip

Und installieren Sie bereits mit diesem Dienstprogramm, das für Windows- und Linux-Systeme gleich ist:

pip install PyQt5

IDE PyCharm wurde für die Entwicklung in Python ausgewählt.


Hello World

Lassen Sie uns nun ein kleines Programm in PyQt5 schreiben, das ein Anwendungsfenster mit einem Label startet und einen Menüpunkt in der Menüleiste hat. Mit einem Klick auf diesen Punkt schließen wir die Anwendung.

Volltext des Programms

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())

Unterschiede

if name == " main ":

In Python-Anwendungen finden Sie häufig das folgende Konstrukt:

if __name__ == "__main__":

Mit dieser Konstruktion können Sie dem Python-Skript mitteilen, welcher Programmcode ausgeführt werden soll, wenn es als eigenständige Anwendung gestartet wird. Wenn dieses Skript in ein anderes Skript importiert wird, wird der Programmcode, der dieser Konstruktion folgt, nicht aufgerufen.

Signal und Slot Syntax

PyQt5 verwendet die folgende Signal- und Slot-Syntax, die anhand des QAction-Beispiels gezeigt wird.

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

Während in Qt/C++ das gleiche so aussehen würde:

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

Python

Vielleicht das Offensichtlichste ;-)
Kein Kommentar hier.

Fazit

Als Ergebnis erhalten wir ein Programm des folgenden Typs.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

ИР
  • 13. Mai 2020 02:58

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

ВР
  • 17. August 2021 19:09

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

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken