Domanda

In Mac 10.6, voglio causare un'applicazione attiva per diventare de-attiva, o minimizzato da Python

So che potrei usare sendKey in Windows con Python, allora che dire in Mac?

È stato utile?

Soluzione

Ecco quello che ho trovato da una domanda diversa su Stack Overflow. Funziona abbastanza 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)

Altri suggerimenti

appscript , un ponte di evento Apple disponibile in PyPI:

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

Oltre a Yinan, che invierà la sequenza di tasti per l'applicazione attualmente attiva, è possibile inviarlo a una specifica applicazione come segue. Passare il seguente per osascript come prima, o salvarlo in un file e passare il file al osascript

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

Questo invierà Cmd + r per Safari dopo aver portato in primo piano

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

Per rendere i miei script, che già lavorano su Windows utilizzando SendKeys da pip lavorare anche su OS X, ho fatto un file /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, quindi non sarà messa sul pypi, ma è sufficiente a rendere i miei script eseguiti sia su OS X e Windows.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top