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.
Eingabe von strings in externe GUI
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...
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 )
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 hat geschrieben:Schau dir sonst mal AutoIT an. Das benutzt man unter anderem auch zur Automation von Programmen
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.
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
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)
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
-
- 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...
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...