Eine neue Version zu diesem Thema, das PyQt6 behandelt, findet Ihr hier.
Bei Qt handelt es sich um ein Framework, mit dem (GUI-)Applikationen für unterschiedliche Plattformen entwickelt werden können. Zusammen mit Python 3 kann Qt5 insbesondere dafür verwendet werden, Anwendungen mit grafischer Benutzeroberfläche zu erstellen. Weitere Informationen zu diesem Framework gibt es auf der Qt-Homepage.
Um das Framework nutzen zu können, müsst Ihr die entsprechende Bibliothek installieren:
$ pip install PyQt5 (Windows)
$ pip3 install PyQt5 (macOS)
$ apt install python3-qt5 (Ubuntu Linux)
Sobald die Installation abgeschlossen ist, kann es auch sofort mit einem ersten Projekt losgehen. Ein einfaches, leeres Applikations-Fenster lässt sich mit folgendem Code realisieren:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
# oder
# app = QApplication([])
# Ein Fenster erzeugen
window = QWidget()
window.resize(450, 300)
window.move(300, 300)
window.setWindowTitle('Qt5-Fenster')
# Standardmäßig wird ein Fenster nicht angezeigt, deswegen
window.show()
# Event loop starten
app.exec_()
Dies führt zu folgendem Fenster (Windows 10 und macOS):
Der erforderliche Code ist sehr einfach: Zunächst wird eine QApplication
-Instanz erzeugt. Diese Instanz wird der Parameter sys.arg
übergeben. Dabei handelt es sich um eine Liste mit zu übergebenden Kommandozeilen-Argumenten. Falls keine Argumente übergeben werden sollen, kann man auch
app = QApplication([])
schreiben.
Es folgt dann die Erzeugung einer QWidget
-Instanz. Das eröffnet uns die Möglichkeit, die Größe des Fensters, die Position und den Fenster-Titel festzulegen. Die Zeile window.show()
lässt dann das Fenster auf dem Monitor erscheinen. Schließlich wird mit app.exec_()
die Ereignis-Schleife (event loop) gestartet. Der Unterstrich bei exec_
ist übrigens erforderlich, da exec
ein in Python 2 reserviertes Wort war.
Mit Python ist auch eine objektorientierte Programmierung möglich. Deswegen folgt nun ein anderer Ansatz, bei dem eine Klasse erstellt wird.
import sys
from PyQt5.QtWidgets import QApplication, QWidget
class SimpleApp(QWidget):
def __init__(self):
super().__init__()
self.title = 'Qt5-Fenster'
self.left = 300
self.top = 300
self.width = 450
self.height = 300
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
example_window = SimpleApp()
sys.exit(app.exec_())
In diesem Beispiel lassen sich die Elemente des vorherigen Codes wiedererkennen, so dass er ebenfalls nicht schwer zu verstehen sein dürfte. Die Fenster-Eigenschaften werden hier in der Klasse SimpleApp „verpackt“. Für die Position, die Breite und die Höhe des Fensters wird die Methode setGeometry()
genutzt. Die Zeile example_window = SimpleApp()
sorgt schließlich für die Instanziierung von SimpleApp.
Als Fazit kann also festgehalten werden, dass die Erzeugung eines einfachen Fensters nicht sonderlich schwierig ist. Die hier gezeigten Beispiele sollten übrigens sowohl auf Linux als auch auf macOS und Windows laufen.
Auch wenn man mit QWidget ein Fenster erzeugen kann, würde man in der Praxis für das Erstellen eines Hauptfensters eher QMainWindow verwenden, ein Widget, das alle für ein Fenster erforderlichen Standardkomponenten beinhaltet. Ein Beispiel dafür findet Ihr in diesem Blogbeitrag.
Weitere Artikel zu PyQt5
- Qt5-Fenster mit QMainWindow erstellen
- password_creator – Eine einfache Python-Qt5-Anwendung
- Einen einfachen Texteditor mit PyQt5 erstellen
Zuletzt aktualisiert am 18. September 2020