Я пытался показать экземпляр QMenu с помощью горячей клавиши (например, «F1») с помощью PyQt5 , затем я нашел этот пакет клавиатура .
Попытка использовать его следующим образом: keyboard.add_hotkey('F1', self.show_menu, suppress=True)
Затем я получил следующий код:
import sys
import keyboard
from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__(flags=Qt.WindowStaysOnTopHint)
self.menu = QMenu('Menu')
self.menu.addAction(QAction('menu1', self.menu))
self.menu.addAction(QAction('menu2', self.menu))
self.menu.addAction(QAction('menu3', self.menu))
self.show_menu() # this works well
keyboard.add_hotkey('F1', self.show_menu, suppress=True) # this hotkey works but not showing the menu
def show_menu(self):
print('111')
self.menu.popup(QCursor().pos())
print('222')
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setQuitOnLastWindowClosed(False)
win = MainWindow()
# win.show()
sys.exit(app.exec_())
На самом деле, вызов метода self.show_menu
в __init__
работает ну, меню может всплыть, как и ожидалось.
Но ВОПРОС заключается в том, что, когда я нажимаю горячую клавишу «F1», «111» и «222» будут напечатаны, но меню , не появится.
Что-то не так, или я могу сделать это другими способами? Пожалуйста, скажите мне, спасибо.