2012-03-13 8 views
2

Par exemple, si je voulais utiliser quelque chose comme:Comment utiliser xdotool depuis un module/script python?

xdotool mouseMove 945 132

xdotool cliquez sur 1

Pour déplacer la souris à un certain endroit et cliquez sur. Dans ubuntu je peux simplement taper ces commandes directement dans le terminal pour obtenir l'effet désiré mais je voudrais les mettre dans un script Python. Merci d'avance!

Répondre

8
import subprocess 

subprocess.call(["xdotool", "mousemove", "945", "132"]) 

etc. Voir les docs subprocess.

+0

AWESOME !! Merci beaucoup! :RÉ – coffeeNcode

0

J'utilisais xdotool avec sh et os.system pendant un certain temps, mais a décidé de mettre à jour tout d'utiliser le sous-processus. Ce faisant, j'ai rencontré quelques problèmes mineurs et dans googling découvert the libxdo python module suggested by Simon. Il y avait un petit problème avec Python3 - il utilise des chaînes d'octets - mais la conversion était simple et il fonctionne plus facilement et de façon fiable que l'ancien processus en deux étapes.

Voici un petit code qui peut vous aider (il est évident que le hash bang doit correspondre à votre chemin python). Les deux fonctions incluent la conversion en bytestrings (ascii) pour Python 3 donc .encode() pourrait être laissé pour 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') 
Questions connexes