Kapitel 28
Benutzungsoberflächen mit Qt
776
Erläuterung:
#1: Hier wird ein Objekt der Klasse QPixmap erzeugt. Es repräsentiert ein Bild. Das Argu-
ment des Konstruktors ist ein String mit dem Pfad zur Bilddatei. In diesem Fall ist die Bild-
datei im gleichen Verzeichnis wie die Programmdatei.
#2: Hier wird ein Label-Widget ohne jeglichen Inhalt erschaffen. Das Argument self wurde
weggelassen, denn das Widget wird später über ein Layout-Objekt sichtbar gemacht. (Es
schadet aber nichts, wenn Sie es verwenden.)
#3: Auf das Label wird ein Bild gesetzt.
#4: Ein zweites Label mit Text wird erzeugt.
#5: Die beiden Label-Widgets werden untereinander in ein vertikales Box-Layout gesetzt.
#6: Dem Applikationsfenster wird das vertikale Box-Layout-Objekt zugewiesen.
28.7 Signale
Wenn ein Benutzer zur Laufzeit des Programms ein interaktives Widget anklickt oder auf
eine andere Weise manipuliert, sendet es ein Signal. Jeder Signaltyp kann mit einer
Methode oder Funktion verbunden werden. Sie wird dann jedes Mal ausgeführt, wenn das
Signal gesendet worden ist. Ein Signal ist einem Event sehr ähnlich. Der Unterschied:
Events repräsentieren Ereignisse der externen Welt und sind mit Computer-Hardware wie
Maus oder Tastatur assoziiert (Mausklick, Mausbewegung, Druck auf eine Taste etc.). Dage-
gen werden Signale von Qt-Widgets (also Elementen der grafischen Benutzungsoberfläche)
gesendet, wenn mit ihnen bestimmte Dinge passieren. Es gibt nur wenige Typen von Events
und – entsprechend der Vielfalt von Qt-Widgets – viele Typen von Signalen.
In der Redeweise von Qt heißen die Funktionen, die auf Signale reagieren, Slots. Sie können
Methoden, die Sie mit einer
def-Anweisung selbst programmiert haben, zu Slots machen
oder aber Sie verknüpfen bereits vorhandene Methoden der Widgets mit Signalen.
super().__init__()
picture = QPixmap("skytree.png") #1
self.label1 = QLabel() #2
self.label1.setPixmap(picture) #3
self.label2 = QLabel("Der Skytree in Tokio") #4
vbox = QVBoxLayout() #5
vbox.addWidget(self.label1)
vbox.addWidget(self.label2)
self.setLayout(vbox) #6
self.show()
app = QApplication(sys.argv)
pv = PhotoView()
sys.exit(app.exec_())

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.