我正在尝试使用 pyautogui 通过键盘快捷键发出一系列命令。
该脚本如下所示:
#!/usr/bin/python3
import pyautogui
# Keyboard sequence to delete current line of text
pyautogui.press('end')
pyautogui.hotkey("shift", "home")
pyautogui.press('backspace')
如果我通过终端写入sleep 1 && ./pyautoguitest.py
并快速切换另一个窗口,它可以正常工作并删除课程器所在的当前行。
然而,当我转到键盘快捷键并绑定Shift + Alt + Backspace
到命令时/usr/bin/python3 /home/user/pyautoguitest.py
,它会默默地失败......什么也没有发生。
我正在使用 Pop_OS!它应该以与 Ubuntu 上相同的方式处理它。
有没有人尝试过让 pyautogui 使用键盘快捷键?
为了排除运行脚本的权限问题,我给了它 777 权限,因此所有用户都应该能够运行它
更新 ------ 我尝试在 python 脚本中使用日志记录来查看是否有任何失败
#!/usr/bin/python3
import logging
import traceback
logging.basicConfig(filename='/tmp/myapp.log', level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(name)s %(message)s')
logger=logging.getLogger(__name__)
try:
import pyautogui
import sys
pyautogui.press('end')
pyautogui.hotkey("shift", "home")
pyautogui.press('backspace')
except Exception as e:
logger.error(traceback.format_exc())
else:
logger.error("all clear")
sleep 2 && ./pyautoguitest.py
当我使用日志文件执行该文件时,会得到一个all clear
条目,表明一切正常,当我通过键盘快捷键执行此操作时,也会发生同样的事情。
很奇怪,当用作键盘快捷键时,就像有东西阻止它运行按键一样
答案1
我最近添加了一个自定义快捷方式来插入电子邮件地址,并使用 xdotool 来插入击键。因此,从包管理器安装包xdotool
,并在系统设置中转到快捷方式 - 自定义快捷方式,然后添加新的全局快捷方式(命令/URL)
在那里插入以下命令:sleep 0.3 && xdotool key End Shift+Home Clear
如果您想插入电子邮件:sleep 0.3 && xdotool key t e s t at e x a m p l e period c o m
这sleep 0.3
是必要的,因为当您按下键盘上的快捷键时,命令将立即执行,并且键盘上(仍然)按下的键会干扰代码中的键。也许这也是您的情况的问题?