В PyQt5 обработка нажатий клавиш на клавиатуре может быть выполнена с помощью переопределения метода `keyPressEvent`. Ниже приведен пример кода, который демонстрирует, как это сделать, а затем я объясню каждую часть кода.
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
class MyWindow(QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.label = QLabel("Нажмите любую клавишу", self)
self.label.setGeometry(100, 100, 300, 50)
self.setWindowTitle("Обработка клавиш")
self.setGeometry(100, 100, 400, 300)
def keyPressEvent(self, event):
key = event.key()
self.label.setText(f"Вы нажали: {event.text()} (код: {key})")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
```
### Пояснение кода:
1. **Импорт необходимых модулей**:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
```
Здесь мы импортируем модуль `sys`, чтобы работать с аргументами командной строки и управлять жизненным циклом приложения, а также классы `QApplication`, `QMainWindow` и `QLabel` из библиотеки PyQt5 для создания оконного интерфейса.
2. **Создание класса окна**:
```python
class MyWindow(QMainWindow):
```
Мы создаем класс `MyWindow`, который наследуется от `QMainWindow`. Этот класс будет представлять основное окно приложения.
3. **Инициализация окна**:
```python
def __init__(self):
super(MyWindow, self).__init__()
self.label = QLabel("Нажмите любую клавишу", self)
self.label.setGeometry(100, 100, 300, 50)
self.setWindowTitle("Обработка клавиш")
self.setGeometry(100, 100, 400, 300)
```
В методе `__init__` мы:
- Вызываем инициализацию родительского класса `QMainWindow` с помощью `super()`.
- Создаем метку `QLabel`, которая отображает текст "Нажмите любую клавишу".
- Устанавливаем заголовок окна с помощью `setWindowTitle`.
- Устанавливаем размеры и положение окна с помощью `setGeometry`.
4. **Обработка нажатий клавиш**:
```python
def keyPressEvent(self, event):
key = event.key()
self.label.setText(f"Вы нажали: {event.text()} (код: {key})")
```
Метод `keyPressEvent` вызывается при нажатии клавиш. В этом методе:
- Мы получаем объект события `event`, который содержит информацию о нажатой клавише.
- Используем `event.key()` для получения кода нажатой клавиши и `event.text()` для получения символа.
- Обновляем текст метки, чтобы отобразить, какая клавиша была нажата.
5. **Запуск приложения**:
```python
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
```
- Проверяем, запускается ли скрипт как основная программа.
- Создаем экземпляр приложения `QApplication`.
- Создаем экземпляр нашего окна `MyWindow`.
- Вызываем метод `show()`, чтобы отобразить окно.
- Запускаем главный цикл приложения с помощью `app.exec_()` и ждем его завершения. `sys.exit()` помогает корректно завершить процесс.
Этот код демонстрирует базовое использование PyQt5 для обработки нажатий клавиш и отображения информации в графическом интерфейсе.