w3resource

Python PyQt keyboard event handling example

Python PyQt Event Handling: Exercise-3 with Solution

Write a Python program to build a PyQt application that responds to keyboard events such as key presses and releases.

From doc.qt.io:

QApplication Class: The QApplication class manages the GUI application's control flow and main settings.

QMainWindow Class: The QMainWindow class provides a main application window.

QLabel Class: The QLabel widget provides a text or image display.

QWidget Class: The QWidget class is the base class of all user interface objects.

QKeyEvent Class: The QKeyEvent class describes a key event.

Sample Solution:

Python Code:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QWidget
from PyQt5.QtGui import QKeyEvent

class KeyboardEventApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Keyboard Event Example")
        self.setGeometry(100, 100, 400, 200)

        self.central_widget = QWidget(self)
        self.setCentralWidget(self.central_widget)

        self.key_label = QLabel("Last Key Pressed: None", self.central_widget)
        self.key_label.setGeometry(10, 10, 200, 30)

    def keyPressEvent(self, event):
        if isinstance(event, QKeyEvent):
            key_text = event.text()
            self.key_label.setText(f"Last Key Pressed: {key_text}")

    def keyReleaseEvent(self, event):
        if isinstance(event, QKeyEvent):
            key_text = event.text()
            self.key_label.setText(f"Key Released: {key_text}")

def main():
    app = QApplication(sys.argv)
    window = KeyboardEventApp()
    window.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

Explanation:

In the exercise above -

  • Import the necessary PyQt5 modules.
  • Create a custom class "KeyboardEventApp" that inherits from "QMainWindow".
  • Inside the KeyboardEventApp class constructor (__init__), we set up the main window and a label to display keyboard events.
  • Override the "keyPressEvent()" and "keyReleaseEvent()" methods to respond to key presses and releases, respectively. These methods are automatically called when keyboard events occur.
  • Inside the "keyPressEvent()" and "keyReleaseEvent()" methods, we use event.text() to retrieve the text of the key that was pressed or released, and update the label with the corresponding information.
  • Create an instance of the “KeyboardEventApp” class, show the main window, and start the PyQt5 application event loop.

Output:

PyQt: Python PyQt keyboard event handling example. Part-1
PyQt: Python PyQt keyboard event handling example. Part-2
PyQt: Python PyQt keyboard event handling example. Part-3

Flowchart:

Flowchart: Python PyQt keyboard event handling example.
Flowchart: Python PyQt keyboard event handling example.

Python Code Editor:


Previous: Capture and display mouse events in PyQt5 with Python.
Next: Python PyQt custom button example.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/python-exercises/pyqt/python-pyqt-event-handling-exercise-3.php