2009-11-20 19 views
17

In Mac 10.6, voglio far sì che un'applicazione attiva diventi deattiva o minimizzata da PythonEsiste un sendKey per Mac in Python?

So che potrei usare sendKey in Windows con Python, quindi cosa succede in Mac?

+2

Che cos'è la "chiave di invio"? –

+4

sendkeys è un'API di Windows per inviare una pressione di tasto a una finestra dell'applicazione in modo progressivo. – Fusspawn

risposta

25

Ecco cosa ho trovato da una domanda diversa su Stack Overflow. Funziona piuttosto bene per il mio problema.

import os 
cmd = """ 
osascript -e 'tell application "System Events" to keystroke "m" using {command down}' 
""" 
# minimize active window 
os.system(cmd) 
+1

Stavo cercando come farlo in Ruby e la stessa idea può essere usata anche ... 'mette \' osascript -e 'dire all'applicazione "Eventi di sistema" alla battitura "m" usando {command down}' \ '' o passare un file per eseguire ulteriori operazioni di osrodazione 'puts \' osascript example.as \ '' – danmayer

0

Forse è possibile eseguire uno script OSA (uomo osascript) da Python, per esempio, e guidare l'applicazione?

4

Oltre a Yinan, che invierà il tasto all'applicazione attualmente attiva, è possibile inviarlo a un'applicazione specifica come segue. Passare il seguente per osascript come prima, o salvarlo in un file e passare il file da osascript

tell application "Safari" 
    activate 
    tell application "System Events" to keystroke "r" using {command down} 
end tell 

Questo invierà Cmd + R a Safari dopo aver portato in primo piano

7

Prova appscript, un ponte di evento Apple disponibile in PyPI:

from appscript import app, k 
app('System Events').keystroke('N', using=k.command_down) 
+0

Si noti che l'appscript non è più sviluppato o supportato e il suo utilizzo non è consigliato per i nuovi progetti. – tester

1

a fare il mio script, che già lavorano su Windows utilizzando SendKeys da pip lavorare anche su OS X, ho fatto un file di /Library/Python/2.7/site-packages/SendKeys/__init__.py (site-packages è dove pip mette tutto si installa sul mio Mac ... non so se questo è configurabile o meno.)

Il contenuto del file sono:

def SendKeys(keys): 
    if keys == '{ENTER}' 
     keys = 'return' 
    from os import system 
    system('osascript -e \'tell application "System Events" to keystroke ' + keys + "'") 

Ovviamente non è molto robusto, in modo da Non lo metterò su pypi, ma è sufficiente per far funzionare i miei script sia su OS X che su Windows.

Problemi correlati