2016-05-20 6 views
1

У меня странное требование. Я хочу открыть новый xterm, используя команды tcl и send на этом xterm. Я googled, но ничего не мог получитьМогу ли я открыть новый xterm с помощью tcl и отправить команды на этом xterm

Пример: У меня есть GUI с 4 кнопками. Когда я нажимаю на кнопку1, он открывает новые xterm и посылает команды, связанные с кнопкой1 на этом xterm.

Аналогично, когда я нажимаю на button2 он откроется еще одно окно XTERM и он будет посылать высоко оценивает связанные с button2 на новом XTerm

Любая помощь очень ценится

+0

Ожидать не автоматизирует GUI приложений, даже не один, как «простой», как XTerm. –

ответ

0

Что вы можете сделать, это написать временный Ожидайте сценарий в файл из основного и запустить этот временный скрипт в вашем 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 

В качестве альтернативы, вы можете иметь предопределенный, без временного Expect файл сценария для каждой команды. Вы можете запустить его так же с

exec xterm -e expect -f action1.exp & 

из Ожидайте или tclsh.

2

Да, вы можете сделать это, используя опцию xterm -S. У Don Libes есть пример с именем multixterm, который использует эту функцию. Это отправляет символы в/из xterm (s).

Для боковой комментарий о кнопках —, которые должны быть сделаны с помощью кнопок в интерфейсе Tcl/Tk (получение X события из XTerm будет сложнее).

Дальнейшее чтение: