Pyqt5 почему не работает show()

Вот события keyPressEvent(). Если мы нажимаем клавишу Esc, то приложение hide().

А теперь я хочу нажать alt и чтобы оно show(), но оно не работает. Помогите

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Event handler')
        self.show()

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Escape:
            self.hide()
        elif e.key() == Qt.Key_Alt:
            self.show()


app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Key events отправляются в виджет с фокусом ввода с клавиатуры при нажатии или отпускании клавиш.

https://doc.qt.io/qt-5/qkeyevent.html#details

Внимание! - с фокусом ввода !

Вставьте какой-нибудь print('QtCore.Qt.Key_Alt') и нажимайте alt Вы видите работу принта.

Теперь сверните выше окно и нажимайте alt. Ничего не происходит, т.к. приложение не в фокусе.

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Event handler')
        self.show()

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Escape:
            self.hide()
        elif e.key() == Qt.Key_Alt:
            print('QtCore.Qt.Key_Alt')                  # +++
            self.show()


app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

Update

То что вы задумали, может быть реализовано с дочерним виджетом, например так см. пример 2. При этом если главное окно в фокусе.

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication, QLabel


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Event handler')

        self.label = QLabel('Hello World', self)            # +++
        self.label.move(100, 50)                            # +++

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Escape:
            self.label.hide()                               # self.label
        elif e.key() == Qt.Key_Alt:
            print('QtCore.Qt.Key_Alt')                 
            self.label.show()                               # self.label


app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка