【发布时间】:2019-12-09 08:45:17
【问题描述】:
我正在尝试使用 Python 中的“键盘”模块模拟现有的 AutoHotKey 脚本(因为 AHK 脚本的部署故事似乎比 Python 脚本更糟糕)。
在这个脚本中,我使用了键盘快捷键(左 Windows 键+F12),它应该触发“复制”命令,允许我通过 pyperclip 或 win32clipboard 检索复制的文本,对其进行修改,并将选定的文本替换为输入新文本
这里是win32clipboard版本的代码:
import keyboard
import win32clipboard
def on_triggered():
keyboard.press_and_release('ctrl+c')
win32clipboard.OpenClipboard()
new_data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
keyboard.write(new_data + ' duuuuude.')
keyboard.add_hotkey('left windows+F12', on_triggered)
我已经简化了上面的脚本,删除了一些管理代码(保存、清除和恢复现有剪贴板内容)。
据我所知,当“ctrl+c”被触发时,“左窗口+F12”仍然被按住,并且文本实际上从未被复制。有没有办法告诉“键盘”库忽略所有当前的键盘输入?还是我采取了错误的方法?
【问题讨论】:
-
您找到解决方案了吗?
-
很遗憾没有。我想我会尝试弄清楚如何部署 AutoHotKey 并使用 Python 脚本修改 AutoHotKey 脚本,以便做我需要做的事情。
-
其实我找到了一个解决方法,我只是在回调函数中创建了一个线程,我让线程休眠0.3s然后执行我的代码,它工作得很好。
-
不错!我从来没有将 Python 线程用于任何有用的东西,这应该会给我我需要的动力。随意发布作为答案。
标签: python automation keyboard-shortcuts ui-automation keyboard-events