如何在 Python/PyQt 中模拟真实键盘的按键?

How to simulate a real keyboard's keypress in Python/PyQt?

我需要编写一个虚拟键盘来输入文本,我打算使用 Python 和 Qt (PyQt) 库来完成这项任务。问题是我不知道如何模拟 KeyPress 不是作为内部 Qt 事件,而是作为真实键盘的模拟,因此我可以像使用真实键盘一样使用此键盘 - 与我计算机上的应用程序交互。我在 Qt 文档中找不到任何关于此的内容。那么有什么方法可以通过 PyQt/Qt 来完成,或者我需要使用一些 Python 库,具体是哪个?

我知道这是一个 PyQt 问题,但应 OP 的要求,将提供一个 C++ 示例,以防它有助于找到 Python 解决方案。

在 C++ 端模拟键盘是通过将按键事件发布到应用程序的事件循环来完成的。这些可能被认为是 'internal Qt events',但与物理按键所接收到的界面完全相同。它们的实现方式如下:

QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter);
QCoreApplication::postEvent (receiver, event);

查看PyQt QCoreApplcation API,postEvent函数也存在,所以应该可以做一些类似的事情(不幸的是我不能提供一个例子,因为我我不熟悉编写 python 脚本。

我遇到了同样的问题。

Pyautogui 对此非常有用,而且非常简单。

import pyautogui
pyautogui.typewrite("the stuff")

或者,如果您想实际模拟按下文字按键,请使用:

import pyautogui
pyautogui.keypressDown("the stuff")
pyautogui.keypressUp("the stuff")

这是文档:https://pyautogui.readthedocs.org/en/latest/

希望这对您有所帮助。