Domanda

Sto scrivendo uno script per automatizzare l'esecuzione di un particolare modello. Quando il modello fallisce, si attende un input dell'utente (tasto Invio). Posso rilevare quando il modello ha fallito, ma non sono in grado di utilizzare Python (su Linux) per simulare un evento di pressione di un tasto. Windows ha i SendKeys libreria per fare questo, ma mi chiedevo se c'è una biblioteca simile per python su linux.

Grazie!

È stato utile?

Soluzione

Se il "modello" è in funzione grafica (con il sistema X Window), il già suggerito xsendkey è una possibilità, o xsendkeycode . Se è in esecuzione testualmente (in una finestra di terminale), quindi pexpect .

Altri suggerimenti

Date un'occhiata a questo https://github.com/SavinaRoja/PyUserInput il suo controllo cross-platform per il mouse e la tastiera in Python

opere di controllo della tastiera X11 (linux) e sistemi Windows. Ma nessun supporto per Mac (quando ho scritto questa risposta).

from pykeyboard import PyKeyboard
k = PyKeyboard()

# To Create an Alt+Tab combo
k.press_key(k.alt_key)
k.tap_key(k.tab_key)
k.release_key(k.alt_key)

Un approccio più basso livello sarebbe quella di creare un dispositivo uinput da cui si sarebbe poi iniettare eventi di input nel sottosistema di input Linux. Prendere in considerazione le seguenti librerie:

Esempio di invio <enter> con questi ultimi:

from evdev import uinput, ecodes as e

with uinput.UInput() as ui:
     ui.write(e.EV_KEY, e.KEY_ENTER, 1)
     ui.write(e.EV_KEY, e.KEY_ENTER, 0)
     ui.syn()

PyAutoGui . E 'ridicolmente semplice da usare, è multipiattaforma ed è per Python 3 e 2.

Nel sito sono elencate le dipendenze e alcuni esempi di codice.

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