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

时间:2015-01-13 11:12:21

标签: python windows qt pyqt keypress

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

2 个答案:

答案 0 :(得分:2)

我知道这是一个PyQt问题,但是在OP的请求下会给出一个c ++示例,以防它有助于找到Python解决方案。

在c ++方面,模拟键盘是通过将keypress事件发布到应用程序的事件循环来完成的。这些可以被认为是“内部Qt事件”,但是与物理按键接收的接口完全相同。它们完成如下:

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

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

答案 1 :(得分:2)

我遇到了同样的问题。

Pyautogui对此非常好,而且很简单。

import pyautogui
pyautogui.typewrite("the stuff")

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

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

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

希望这会有所帮助。