1

我有一个软件包,它有一个用 tclsh/wish 编写的非常繁琐的 GUI。我想通过终端控制软件并制作一些脚本来运行它。wish GUI 很长(超过 37000 行),所以我想避免详细阅读它并编写相应的命令行界面。假设我已经知道要按下的按钮序列和要填充的输入字段。有没有办法通过终端控制这个愿望 GUI 怪物?

GUI通过以下方式调用:

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

即使我删除了 -f 标志,它也不会接受任何终端输入或显示 % 提示。我不明白 -n 标志后面的部分。如果我删除它,程序运行相同。

即简单地调用

wish $PROGRAM_PATH/program.tcl

做同样的事情。

我也尝试了 -file 标志并为外部文件提供命令,但希望在定义所有内部变量和例程之前尝试输入这些命令,因此导致命令无法识别。

任何人都可以指出一些关于希望脚本的有用资源吗?

4

1 回答 1

1

如果您有一个程序prog.tcl,它有一个输入字段 .e 和一个按钮 .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

您可以使用这样的脚本来运行它:

#!/usr/bin/tclsh

package require Tk

source prog.tcl

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

这仅在您有来源时才有效,看起来您确实有。

无需生成事件以在输入字段中输入数据,只需获取关联变量并将其设置为所需值就容易得多。按钮很简单。还有组合框(下拉菜单)、复选框、刻度和单选按钮可供使用。我将这些方法广泛用于我的自动化测试并且它有效。

You will still have to read the code to find out the entry and button names.

If you are on Windows, you could also try the autohotkey program.

于 2016-08-30T23:11:53.780 回答