Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何模拟真实的键盘';Python/PyQt中的s键?_Python_Windows_Qt_Pyqt_Keypress - Fatal编程技术网

如何模拟真实的键盘';Python/PyQt中的s键?

如何模拟真实的键盘';Python/PyQt中的s键?,python,windows,qt,pyqt,keypress,Python,Windows,Qt,Pyqt,Keypress,我需要编写一个用于键入文本的虚拟键盘,我计划使用Python和Qt(PyQt)库来完成这项任务。问题是,我不知道如何模拟按键,不是作为内部Qt事件,而是作为真实键盘的模拟,这样我就可以像使用真实键盘一样使用这个键盘——与计算机上的应用程序交互。我在Qt文档中找不到任何与此相关的内容。那么,有没有办法通过PyQt/Qt来实现这一点,或者我需要使用一些Python库,具体是哪一种 > P>我知道这是一个PYQT问题,但是在OP的请求下,它将给出一个C++示例,以帮助它找到Python解决方案。 在C

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

> P>我知道这是一个PYQT问题,但是在OP的请求下,它将给出一个C++示例,以帮助它找到Python解决方案。 在C++模拟键盘上的P>是通过向应用程序的事件循环发布按键事件来完成的。这些可能被视为“内部Qt事件”,但与物理按键接收的接口完全相同。它们的实现如下:

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

通过PyQt
qcoreapplication
API,也存在
postEvent
函数,因此应该可以做一些分析性的事情(不幸的是,我不能提供一个示例,因为我不熟悉编写python脚本)。

我也有同样的问题

Pyautogui在这方面非常好,而且非常简单

import pyautogui
pyautogui.typewrite("the stuff")
或者,如果您想实际模拟按文字按键,请使用:

import pyautogui
pyautogui.keypressDown("the stuff")
pyautogui.keypressUp("the stuff")
以下是文档:


希望这有帮助

所以你的意思是不喜欢?@figs看起来这个函数只在应用程序内部工作,它需要有接收器小部件。但我需要一个应用程序来模拟真实的键盘,所以我可以使用这个应用程序来输入文本,比如在浏览器中。它是特定于平台的。你不能用Qt。在Windows上,可以使用PyWi32调用WINAPI函数。在QT的C++侧,可以将键按下事件发布到事件循环以模拟新闻。也许您可以在PyQt中执行相同的操作?您可能会发现此Qt中心线程非常有用:。Qt-Apps.org上也有这个例子:。所有这些都是C++,所以,显然您需要将代码移植到PyQT。谢谢帮助,但是在这种情况下,接收器是什么?接收器是哪个代码< > QObjult<代码>处理按键事件。它可以是您的主窗口、文本编辑、其他一些带有按键事件过滤器的小部件,等等。基本上,无论您希望哪个
QObject
都可以成为真正按键的处理程序。