我需要编写一个用于输入文本的虚拟键盘,我计划使用Python和Qt(PyQt)库来执行此任务。问题是我不知道如何模拟KeyPress不是内部Qt事件,而是模拟真实的键盘,所以我可以像使用真正的键盘一样使用此键盘 - 与我的计算机上的应用程序交互。我无法在Qt文档中找到任何关于此的信息。那么是否有任何方法通过PyQt/Qt来完成,或者我需要使用一些Python库,以及哪些?如何在Python/PyQt中模拟真正的键盘按键?
回答
我知道这是一个PyQt问题,但在OP的请求下会给出一个C++示例,以便它可以帮助您找到Python解决方案。
在C++端模拟键盘是通过将keypress事件发布到应用程序的事件循环来完成的。这些可能被认为是“内部Qt事件”,但与物理按键接收到的接口完全相同。他们完成如下:
QKeyEvent *event = new QKeyEvent (QEvent::KeyPress, Qt::Key_Enter);
QCoreApplication::postEvent (receiver, event);
通过PyQt的QCoreApplcation
API来看,该postEvent
功能也存在,所以它应该是可以做到的事情analagous(可惜我不能提供一个例子是我不熟悉写入python脚本)。
感谢您的帮助,但在这种情况下接收器是什么? –
Receiver是'QObject'处理按键事件的。它可能是你的主窗口,文本编辑,其他一些带有按键事件过滤器的小部件等等。基本上,无论你希望哪个'QObject'成为真正的按键处理程序。 –
我有同样的问题。
Pyautogui是非常好的,这是愚蠢的简单。
import pyautogui
pyautogui.typewrite("the stuff")
或者,如果你想真正模拟按字面按键使用:
import pyautogui
pyautogui.keypressDown("the stuff")
pyautogui.keypressUp("the stuff")
这里的文档:https://pyautogui.readthedocs.org/en/latest/
希望这有助于。
- 1. 如何模拟键盘/鼠标按键?
- 2. 按键模拟键盘按下“Shift”键
- 3. 模拟键盘按
- 4. 如何在C++中模拟指定的键盘按键?
- 5. WPF中的虚拟键盘:模拟真正的输入设备?
- 6. 用Jquery模拟键盘按键
- 7. 在Windows上模拟键盘按键无法正常工作
- 8. 区分键盘的真实和虚拟按键
- 9. 仿真键盘上的按键?
- 10. 模拟键盘按钮按[SDL库]
- 11. 如何模拟用腻子按键盘快捷键?
- 12. 我们如何使用vbs模拟键盘按键?
- 13. Android虚拟键盘KeyListener获取虚拟键盘按键
- 14. 在虚拟键盘上检测按键
- 15. Powershell模拟键盘
- 16. Java模拟键盘
- 17. Android - 如何在虚拟键盘上按下按键?
- 18. vb.net如何模拟keydown和键盘的键盘
- 19. 在Windows上模拟键盘
- 20. 模拟键盘在linux
- 21. Android模拟器中长按键盘的快捷键是什么?
- 22. 如何模拟按键
- 23. 如何模拟按键
- 24. 如何在java中模拟按键?
- 25. 如何在js中模拟按键
- 26. 如何在JavaScript中模拟按键?
- 27. 如何在C中模拟按键#
- 28. 如何在C中模拟按键#
- 29. 模拟按键
- 30. 如何模拟Bash中的键盘按钮
所以你的意思是_不喜欢[this](http://stackoverflow.com/qustions/2035310/how-can-i-simulate-user-interaction-key-press-event-in-qt)? – 101
@figs看起来这个函数只能在应用程序内部工作,它需要有接收器小部件。但我需要应用程序来模拟真正的键盘,所以我可以使用应用程序在浏览器中键入文本。 –
它是平台特定的。你不能用Qt做。在Windows上,您可以使用PyWin32来调用WinApi函数。 – Meefte