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