我有一个奇怪的要求。我想使用tcl打开新的xterm并在该xterm上发送命令。我用谷歌搜索但无法得到任何东西
示例:我正在使用带有4个按钮的GUI。当我点击button1然后它将打开新的xterm并发送与该xterm上的button1相关的命令。
同样当我点击button2时,它会打开另一个xterm窗口,它将在新的xterm上发送与button2相关的表扬
非常感谢任何帮助
答案 0 :(得分:2)
是的,您可以使用xterm的-S
选项执行此操作。 Don Libes有一个名为multixterm
的例子,它使用了这个功能。这会向xterm发送字符。
关于按钮的侧面评论 - 必须使用tcl / tk界面中的按钮完成(从 xterm获取X事件会更加困难)。
进一步阅读:
答案 1 :(得分:0)
您可以做的是将一个临时的Expect脚本写入主文件中的一个文件,并在您的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
。