Eingabe von strings in externe GUI

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
htwstudent
User
Beiträge: 5
Registriert: Dienstag 12. Juli 2011, 13:20

Hallo,

ist es irgendwie möglich mit python auf ein externes Programm zuzugreifen, welches mit einer GUI arbeitet? Bisher habe ich es mit dem subprocess-Modul ausprobiert. Damit funktioniert die Interaktion aber nur solange es sich um Eingaben in der Unix-Shell handelt. Sobald das Programm geöffnet ist, kann python nicht mehr darauf zugreifen.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

solange das externe Programm über eine API verfügt, mittels der Du auf Eingaben aus der GUI zugreifen kannst, geht das. Andernfalls kann ich mir das nur schwer vorstellen...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Schau dir sonst mal AutoIT an. Das benutzt man unter anderem auch zur Automation von Programmen
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

JonasR hat geschrieben:Schau dir sonst mal AutoIT an. Das benutzt man unter anderem auch zur Automation von Programmen
Das scheint nur für Windows zu sein. Der TE spricht aber bereits von "Eingaben in der Unix-Shell", so dass er wahrscheinlich *kein* Windows benutzen wird.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Irgendwie begehe ich immer wieder den gleichen Fehler in diesem Forum :D Ich lese die Aufgabenstellung nicht richtig :D
LivingOn
User
Beiträge: 33
Registriert: Montag 11. August 2008, 07:53

versuch es mal mit pyatspi - zugegeben, die Lösung ist nicht perfekt, sie sollte aber funktionieren:

Das nachfolgende Script schreibt die Zeichenkette "test" in eine beliebige GUI-Anwendung, solange sie nur den Focus hat. Nach dem Start hast Du 10 Sekunden Zeit die Anwendung in den Focus zu holen.

Code: Alles auswählen

import time
import pyatspi

nachricht = (28,26,39,28)

def write(keycodes):
    for keycode in keycodes:
        pyatspi.Registry.generateKeyboardEvent(keycode, None, pyatspi.KEY_PRESSRELEASE)

time.sleep(10)
write(nachricht)
pyatspi "simuliert" Tastatureingaben und schickt Tastencodes an die GUI-Anwendung. Um die notwendigen Codes zu ermitteln, könnte der Event Tester "xev" unter Linux nützlich sein.

Wenn Du ein wenig Aufwand betreiben möchtest, könntest Du eine Mappingtabelle erstellen, in der alle von dir benötigten Zeichen mit ihren Tastencodes hinterlegt sind. Dann sollte es recht einfach sein, eine externe GUI mit Inhalten zu füttern ;-)
htwstudent
User
Beiträge: 5
Registriert: Dienstag 12. Juli 2011, 13:20

Vielen Dank für die Antworten.

die letzte Möglichkeit klingt recht interessant. Für mein aktuelles Problem brauch ich es doch noch nicht, aber vielleicht später. Momentan kann ich das Problem außerhalb von python lösen, in dem ich das gewünschte programm mit einer zusätzlichen datei alle benötigten befehle automatisch ausführen lassen kann...
Antworten