例如,如果我想使用类似的东西:
xdotool mousemove 945 132
xdotool点击1
要将鼠标移动到某个位置并单击。在ubuntu中,我可以直接在终端中输入这些命令以获得所需的效果,但我想将它们放在Python脚本中。提前谢谢!
答案 0 :(得分:11)
import subprocess
subprocess.call(["xdotool", "mousemove", "945", "132"])
等。请参阅subprocess
文档。
答案 1 :(得分:5)
截至2015年,您还可以使用此python包: https://github.com/rshk/python-libxdo
答案 2 :(得分:3)
我一直在使用带有sh和os.system的xdotool一段时间,但决定更新所有内容以使用子进程。这样做我遇到了一些小故障,并在谷歌搜索发现the libxdo python module suggested by Simon。 Python3存在一个小问题 - 它使用了字节串 - 但转换很简单,并且它比旧的两步处理更顺畅,更可靠。
这里有一些可能有用的代码(显然哈希爆炸需要匹配你的python路径)。这两个函数包括转换为Python 3的字节串(ascii),因此.encode()可以在Python 2中保留。
#!/home/john/anaconda3/bin/python3.6
import sys
from xdo import Xdo
from time import sleep
def sendkeys(*keys):
for k in keys: xdo.send_keysequence_window(0, k.encode())
def type(text):
xdo.enter_text_window(0, text.encode())
sleep(0.5)
xdo = Xdo()
# this updates a row in a spreadsheet with copies from prior row
# first check that this is the intended spreadsheet
if 'Trades' in xdo.get_window_name(xdo.get_active_window()).decode():
with open('my_data_file_name', 'r') as f:
trade = (f.readlines()[-int(sys.argv[1])])[:-1]
t = [s if s else '0' for s in trade.split('\t')]
type('\t'.join(t[:7]))
sendkeys('Tab', 'Up', 'ctrl+c', 'Down', 'ctrl+v', 'Right')
type(' ' + t[-3])
sendkeys('Tab')
type(t[-2])
sendkeys('Tab')
type(t[-1])
sendkeys('Tab', 'Up', 'ctrl+c', 'Down', 'ctrl+v', 'Right')
type('333')
sendkeys('Tab')