785
28.12
Events
28.12 Events
Events sind Ereignisse, die von externen Eingabegeräten ausgelöst werden (Maus, Tastatur).
Für jeden Typ von Event besitzt ein
QWidget-Objekt eine leere Methode (Eventhandler), die
man überschreiben und mit Funktionalität füllen kann.
Das folgende Programm simuliert eine Farbwechselleuchte. Der Bildschirm leuchtet kom-
plett (mit allen Pixeln) in einer bestimmten Farbe. Da die Anwendung als Vollbild gezeigt
wird, sieht man keinen Button zum Beenden des Programms. Deshalb wird ein Eventhan-
dler überschrieben, der auf Tastatur-Ereignisse reagiert. Wenn Sie die Taste
(ESC) drücken,
wird die Anwendung geschlossen. Wenn eine beliebige andere Taste gedrückt wird, ändert
sich die Bildschirmfarbe nach dem Zufallsprinzip.
Skript:
Erläuterung:
#1: Das Anwendungsfenster wird im Vollbildmodus gezeigt.
#2: Der Eventhandler keyPressEvent() ist vorgegeben. Hier wird diese Methode neu defi-
niert. Das zweite Argument ist das Event-Objekt. Immer, wenn irgendeine Taste auf der Tas-
tatur gedrückt wird, entsteht ein Tastatur-Event (repräsentiert durch ein Event-Objekt) und
der Eventhandler wird aufgerufen. An dem Event-Objekt
e kann die Methode erkennen,
welche Taste gedrückt worden ist.
#3: keyPressEvent-Objekte besitzen die Methode key(). Sie liefert eine Nummer, die die
gedrückte Taste identifiziert. Wenn die
(ESC)-Taste gedrückt worden ist, liefert key() die
Nummer
16777216, das ist der Wert der Konstanten Qt.Key_Escape.
#4: Wenn die (ESC)-Taste gedrückt worden ist, wird das Anwendungsfenster geschlossen.
import sys, random
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtCore import Qt
COLOR = ["green", "blue", "black", "red", "yellow"]
class Lamp(QWidget):
def __init__(self):
super().__init__()
self.showFullScreen() #1
def keyPressEvent(self, e): #2
if e.key() == Qt.Key_Escape: #3
self.close() #4
else:
style = "background:" + random.choice(COLOR)
self.setStyleSheet(style) #5
app = QApplication(sys.argv)
lamp = Lamp()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.