无焦点的KeyPressEvent

问题描述 投票:0回答:1

我正在编写一个简单的GUI,它将在特定点打开一个opencv窗口。该窗口具有一些非常基本的keyEvents来控制它。我想通过一些功能来推进这一点。由于我的QtGui是我的控制器,因此我认为使用KeyPressedEvent这样做是一种好方法。我的问题是,如果我在opencv窗口上处于活动状态,则无法触发KeyEvent。

如果我的Gui不在焦点内,那么我该如何触发KeyEvent?

我真的需要使用GrabKeyboard吗?

以下代码重现了我的问题:

import sys
from PyQt5.QtWidgets import (QApplication, QWidget)
from PyQt5.Qt import Qt


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setFocusPolicy(Qt.StrongFocus)

    def keyPressEvent(self, event):
        print('Key Pressed!')


if __name__ == '__main__':
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show() 

    sys.exit(app.exec_())
python pyqt5 keypress
1个回答
0
投票

keyPressEvent方法仅在窗口小部件具有焦点时才被调用,因此如果焦点具有另一个应用程序,则不会被通知,因此,如果要检测键盘事件,则必须处理OS库,但是在python中它们已经存在库将这些更改报告为pyinputpyinput):

python -m pip install pyinput
© www.soinside.com 2019 - 2024. All rights reserved.