2016-05-20 1 views
1

私は奇妙な要求があります。私はtclを使って新しいxtermを開き、そのxtermでコマンドを送信したいと思います。私はそれをgoogledしかし、何も得ることができなかった新しいxtermを開き、そのxtermでtclとsendコマンドを使用して開くことができます

例:私は4つのボタンでGUIを持っています。 button1をクリックすると、新しいxtermが開き、そのxtermのbutton1に関連するコマンドが送信されます。それは別のxtermウィンドウを開き、それがお送りしますButton2を私がクリックしたときに同様にすべてのヘルプははるかに高く評価され、あなたが何ができるか

+0

はない一つでもxtermのように「シンプル」として、GUIアプリケーションを自動化しません期待しています。 –

答えて

0

は一時的な期待のスクリプトを記述した新しいxtermの上

をButton2のために関連する表彰

メインのファイルからファイルにコピーし、その一時的なスクリプトをあなたのxtermで実行します。例えば、

#! /usr/bin/env expect 
package require Tk 8.5 
package require fileutil ;# You need to have Tcllib installed for this. 

proc action1 {} { 
    set temp [::fileutil::tempfile] 
    ::fileutil::writeFile $temp { 
     # Delete the temporary file as soon as it has been read. 
     file delete $argv0 

     # Your Expect script for Action 1 follows here. 
     puts {Hello from a new Expect process!} 
     sleep 3 
    } 
    exec xterm -e expect -f $temp & 
} 

# Display the GUI. 
grid \ 
    [::ttk::button .action1 -text {Action 1} -command action1] \ 
    [::ttk::button .quit -text Quit -command {exit 0}] 

vwait forever 

代わりに、各コマンドの定義済みの、非一時的な期待スクリプトファイルを持つことができます。あなたは期待やtclshから

exec xterm -e expect -f action1.exp & 

と同様にそれを実行することができます。

2

はい、これはxtermの-Sオプションを使用して行うことができます。 Don Libesには、この機能を使用するmultixtermという例があります。これは、xtermとの間で文字を送信します。 (のxtermからXイベントを得ることはより困難になる)Tcl/Tkインターフェースのボタンを使用して行わなければならないボタン—について側のコメントについては

さらに読書:

関連する問題