2010-04-04 10 views
12

Ich schreibe ein Skript, um das Ausführen eines bestimmten Modells zu automatisieren. Wenn das Modell fehlschlägt, wartet es auf eine Benutzereingabe (Eingabetaste). Ich kann erkennen, wenn das Modell ausgefallen ist, aber ich kann Python (unter Linux) nicht verwenden, um ein Tastendruckereignis zu simulieren. Windows hat die SendKeys-Bibliothek, um dies zu tun, aber ich frage mich, ob es eine ähnliche Bibliothek für Python unter Linux gibt.Simulieren Key drücken Ereignis mit Python für Linux

Danke!

Antwort

6

Wenn das "Modell" ausgeführt werden grafisch (mit dem X-Window-System), das bereits vorgeschlagen xsendkey ist eine Möglichkeit, oder xsendkeycode. Wenn es textuell (in einem Terminalfenster) läuft, dann pexpect.

+0

Danke! pecpect sollte den Trick für mich tun. – user308827

+0

Hallo! Eine logische Folge: Während pexpect verwenden, das folgende einfache Programm scheint nicht für mich zu arbeiten: Import pexpect Kind = pexpect.spawn ('ls') fout = Datei ('output.txt', ‚w ') child.logfile = fout Dh, output.txt wird erstellt, ist aber leer, wenn ich es cat. pexpect ist in Ordnung, da ich die mit dem Programm gelieferten Samples ausführen kann. Irgendwelche Vorschläge würden geschätzt! danke! – user308827

+7

Die Links zu 'xsendkey' und' xsendkeycode' sind tot. – hazzey

4

Ein Ansatz auf niedrigerer Ebene wäre, ein uinput-Gerät zu erstellen, von dem Sie dann Eingabeereignisse in das Linux-Eingabe-Subsystem eingeben würden. Betrachten Sie die folgenden Bibliotheken:

Beispiel <enter> mit letzterem zu senden:

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() 
12

Werfen Sie einen Blick auf diese https://github.com/SavinaRoja/PyUserInput seine plattformübergreifende Steuerung für Maus und Tastatur in Python

Tastatursteuerung funktioniert auf X11 (Linux) und Windows-Systemen. Aber keine Mac Unterstützung (wenn ich diese Antwort geschrieben habe).

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) 
+0

Wissen Sie, wie Sie die Leertaste "tippen"? – user3768495

+0

Werfen Sie einen Blick auf diese Projects, Leerzeichen muss auf "" (Zeichenfolge mit Leerzeichen) zugeordnet sein https: // github.com/Narengowda/web-maus/blob/master/web_mouse/mouse_wsh.py # L62 https://github.com/SavinaRoja/PyUserInput/blob/master/pykeyboard/x11.py#L28 – naren

+0

Ich kam mit etwas wie 'k.tab_key (k.keypad_keys ['Space'])' aber es funktioniert nicht. Es ist schwer für mich, die Projektdokumentation zu verstehen. Kannst du bitte helfen? – user3768495

1

Ich empfehle PyAutoGui. Es ist lächerlich einfach zu bedienen, es ist Cross-Plattform und es ist für Python 3 und 2.

In der verknüpften Seite sind die Abhängigkeiten und einige Codebeispiele aufgeführt.