Seite 1 von 1

Eingabe von strings in externe GUI

Verfasst: Dienstag 12. Juli 2011, 13:27
von htwstudent
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.

Re: Eingabe von strings in externe GUI

Verfasst: Dienstag 12. Juli 2011, 13:46
von mutetella
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...

Re: Eingabe von strings in externe GUI

Verfasst: Dienstag 12. Juli 2011, 14:21
von JonasR
Schau dir sonst mal AutoIT an. Das benutzt man unter anderem auch zur Automation von Programmen

Re: Eingabe von strings in externe GUI

Verfasst: Dienstag 12. Juli 2011, 16:08
von snafu
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.

Re: Eingabe von strings in externe GUI

Verfasst: Mittwoch 13. Juli 2011, 07:50
von JonasR
Irgendwie begehe ich immer wieder den gleichen Fehler in diesem Forum :D Ich lese die Aufgabenstellung nicht richtig :D

Re: Eingabe von strings in externe GUI

Verfasst: Mittwoch 13. Juli 2011, 07:56
von LivingOn
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 ;-)

Re: Eingabe von strings in externe GUI

Verfasst: Dienstag 19. Juli 2011, 10:29
von htwstudent
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...