Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Umfassendes PyQt5 Tutorial: Professionelle GUIs in Python erstellen

Was ist PyQt?

PyQt ist ein Python-Binding für das Qt Framework, eine cross-platform C++ Library zur Erstellung nativer GUI-Applikationen auf Windows, macOS, Linux, Android, iOS, Raspberry Pi und mehr. Das Binding wird von Riverbank Computing (UK) gewartet, während Qt selbst von The Qt Company (Finnland) entwickelt wird. PyQt gibt Python-Entwicklern Zugriff auf Qts reichhaltiges Set an Widgets, Networking, Database, 3D und Multimedia-Fähigkeiten.

In diesem Tutorial lernen Sie:

Wesentliche Features von PyQt5

PyQt5 exponiert über 600 Klassen, die abdecken:

Diese Fähigkeiten ermöglichen Entwicklern den Bau komplexer, hochperformanter Desktop- und Embedded-Applikationen. Große Konzerne wie LG, Mercedes-Benz, AMD, Panasonic und Harman setzen auf Qt für ihre UI-Stacks.

PyQt Versionen

Riverbank Computing bietet zwei Haupt-Bindings:

Zusätzlich bietet PyQt3D Python-Bindings für das Qt3D Framework, nützlich für Echtzeit-3D-Rendering und Simulation.

PyQt5 installieren

Zwei gängige Installationsmethoden werden unten beschrieben. Wir empfehlen Wheel-Packages, da sie kompilierte C++ Binaries enthalten und langwierige Build-Prozesse vermeiden.

Methode 1: Via Wheels installieren (Empfohlen)

  1. Bevorzugtes Terminal oder Command Prompt öffnen.
  2. pip install PyQt5 ausführen, um das Wheel (≈ 50 MB) herunterzuladen.
  3. Verifizieren, dass die Installation erfolgreich abschließt.

Beispiel auf Windows:

Umfassendes PyQt5 Tutorial: Professionelle GUIs in Python erstellen
pip install PyQt5

Nach Installation können Sie PyQt5.QtWidgets importieren und Applikationen bauen.

Methode 2: Aus Source bauen

Source-Build ist komplexer, da er C++ Code kompiliert. Nur nötig, wenn Sie Custom-Modifikationen brauchen oder das Wheel für Ihre Plattform unavailable ist.

Grundlagen der PyQt5 Programmierung

Unten ein minimales Beispiel, das ein 300×300 Fenster mit Titel "Guru99" öffnet. Jede Zeile ist annotiert für Klarheit.

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(300, 300)
    w.setWindowTitle("Guru99")
    w.show()
    sys.exit(app.exec_())

Erklärung:

Interaktivität hinzufügen

Das folgende Beispiel fügt ein Label, einen Button und eine Message Box hinzu, die erscheint, wenn der Button geklickt wird. Es demonstriert Signals und Slots, das Herz von Qts Event-System.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox

def dialog():
    mbox = QMessageBox()
    mbox.setText("Your allegiance has been noted")
    mbox.setDetailedText("You are now a disciple and subject of the all-knowing Guru")
    mbox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
    mbox.exec_()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(300, 300)
    w.setWindowTitle("Guru99")
    label = QLabel("Behold the Guru, Guru99", w)
    label.move(100, 130)
    btn = QPushButton("Beheld", w)
    btn.move(110, 150)
    btn.clicked.connect(dialog)
    w.show()
    sys.exit(app.exec_())

Klicken auf den Button triggert dialog(), welches ein modales QMessageBox erstellt.

Kernkomponenten und Widgets

PyQt5s Architektur ist in mehrere Module organisiert. Das Verständnis dieser Hierarchie hilft, nur das Nötige zu importieren.

Modul-Übersicht

Gängige Widgets

Layout Management

Statt Widgets manuell mit move() und resize() zu positionieren, bietet Qt Layout Manager, die Widgets basierend auf Fenstergröße automatisch anordnen.

Box Layouts (HBox & VBox)

QHBoxLayout ordnet Widgets horizontal an; QVBoxLayout vertikal.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout

app = QApplication([])
win = QWidget()
win.setWindowTitle("Musketeers")
btn1 = QPushButton("Athos")
btn2 = QPushButton("Porthos")
btn3 = QPushButton("Aramis")
hbox = QHBoxLayout(win)
hbox.addWidget(btn1)
hbox.addWidget(btn2)
hbox.addWidget(btn3)
win.show()
app.exec_()

Ersetzen Sie QHBoxLayout mit QVBoxLayout, um Buttons vertikal zu stapeln.

Grid Layout

Widgets in einem 2D-Grid organisieren. addWidget() akzeptiert Row- und Column-Indizes plus optionale Row-Span/Column-Span Argumente.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout

app = QApplication([])
win = QWidget()
layout = QGridLayout(win)
for i in range(3):
    for j in range(3):
        layout.addWidget(QPushButton(f"Button {i},{j}"), i, j)
win.show()
app.exec_()

Custom Themes und Styles

PyQt5 unterstützt native Themes und Custom Stylesheets.

Eingebaute Themes

Applikations-Style mit app.setStyle("Fusion") oder jedem anderen verfügbaren Style setzen.

app = QApplication([])
app.setStyle("Fusion")

Palette Customization

QPalette nutzen, um Widget-Farben programmatisch zu modifizieren.

from PyQt5.QtGui import QPalette
from PyQt5.QtCore import Qt

palette = QPalette()
palette.setColor(QPalette.ButtonText, Qt.black)
palette.setColor(QPalette.Window, Qt.black)
palette.setColor(QPalette.Button, Qt.gray)
app.setPalette(palette)

Qt Style Sheets (CSS-ähnlich)

Für advanced Styling Stylesheets direkt auf Widgets oder gesamte Applikation anwenden.

btn.setStyleSheet("background-color: #4CAF50; color: white; padding: 5px;")

Kernaussagen

Python

  1. C# Collections meistern: Praktisches Tutorial mit Real-World-Beispielen
  2. Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
  3. Python format()-Strings meistern mit klaren Beispielen
  4. Pythons String.find()-Methode meistern: Syntax, Beispiele & Alternativen
  5. Python Lambda-Funktionen meistern: Praxisbeispiele & Best Practices
  6. Python round()-Funktion erklärt mit praktischen Beispielen
  7. Pythons map()-Funktion meistern: Syntax, Beispiele und Best Practices
  8. Python timeit(): Ausführungszeit messen mit praktischen Beispielen
  9. Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
  10. type() und isinstance() in Python verstehen: Praktische Beispiele