2016-08-30 2 views
1

Ich habe ein Softwarepaket, das eine sehr umständliche GUI in tclsh/wish geschrieben hat. Ich möchte die Software über Terminal steuern und einige Skripte ausführen, um es auszuführen. Die wish-GUI ist ziemlich lang (über 37000 Zeilen), daher möchte ich es vermeiden, sie im Detail zu lesen und eine entsprechende Befehlszeilenschnittstelle zu schreiben. Angenommen, ich kenne bereits die Tastenfolge, die ich drücken möchte, und die Eingabefelder, die ausgefüllt werden sollen. Gibt es eine Möglichkeit, dieses Wunsch-GUI-Monster via Terminal zu steuern?Wie kann man die GUI von Windows Shell (wish/tclsh) umgehen und stattdessen das Terminal benutzen?

exec wish -f $PROGRAM_PATH/program.tcl -n program wish $PROGRAM_PATH $* 

Auch wenn ich das Flag -f es keine Endgeräte-Eingabe nehmen würde entfernen oder die% Aufforderung anzuzeigen:

Die GUI wird über genannt. Ich verstehe den Teil, der der Markierung -n folgt, nicht. Die Programme laufen gleich, wenn ich sie entferne.

heißt calling einfach

wish $PROGRAM_PATH/program.tcl 

macht das Gleiche.

Ich habe versucht, die Datei-Flag und externe Datei mit Befehlen zu liefern, aber wollte versucht, diese Befehle eingeben, bevor alle internen Variablen und Routinen definiert wurden, so dass es zu einem unbekannten Befehl führte.

Kann mir jemand auf eine nützliche Quelle über Wunsch-Scripting hinweisen?

Antwort

1

Wenn Sie hatte ein Programm prog.tcl, die ein Eingabefeld .e hat, und eine Taste .B:

#!/usr/bin/tclsh 

package require Tk 

set e {} 

proc dump { } { 
    global e 
    puts $e 
} 

ttk::label .l -text Entry: 
ttk::entry .e -textvariable e 
grid .l .e 
ttk::button .b -text button -command dump 
grid .b -column 2 

Sie ein Skript wie diese verwenden können, um es auszuführen:

#!/usr/bin/tclsh 

package require Tk 

source prog.tcl 

set tv [.e cget -textvariable] 
set $tv mydata 
.b invoke 
update 

Dies funktioniert nur, wenn Sie die Quelle haben, die Sie erscheinen.

Anstatt Ereignisse zu generieren, um Daten in das Eingabefeld einzugeben, ist es wesentlich einfacher, die zugehörige Variable zu ermitteln und auf den erforderlichen Wert zu setzen. Schaltflächen sind einfach. Es gibt auch Comboboxen (Drop-Downs), Checkboxen, Skalen und Optionsfelder zum Arbeiten. Ich verwende diese Methoden ausgiebig für mein automatisiertes Testen und es funktioniert.

Sie müssen immer noch den Code lesen, um die Namen der Einträge und Tasten zu erfahren.

Wenn Sie Windows verwenden, können Sie auch das Programm autohotkey ausprobieren.

+0

Perfekt, genau was ich gesucht habe. Vielen Dank. – lixpas

+0

Nur eine weitere Frage: ist es möglich, die GUI überhaupt nicht anzuzeigen und nur die Befehle auszuführen? Damit ich die X-Weiterleitung nicht benötige. Ich möchte dieses Programm in einem Computercluster verwenden, in dem ich mich nicht direkt bei den Computerknoten anmelde. – lixpas

+0

Ich glaube nicht. Vielleicht könnte eine virtuelle X-Anzeige verwendet werden (Xvfb). –

Verwandte Themen