2016-08-30 108 views
1

我有一個用tclsh/wish編寫的非常麻煩的GUI軟件包。我想通過終端來控制軟件並製作一些腳本來運行它。希望的GUI很長(超過37000行),所以我想避免詳細閱讀它並編寫相應的命令行界面。假設我已經知道我想要按下的按鈕序列和輸入字段來填充。有沒有辦法通過終端來控制這個希望的GUI怪物?如何繞過窗口shell(wish/tclsh)GUI並改用終端?

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

即使刪除了-f標誌它不會採取任何終端輸入或顯示提示%:

該GUI通過調用。我不明白-n標誌後面的部分。如果我刪除它,程序運行相同。

即主叫只需

wish $PROGRAM_PATH/program.tcl 

做同樣的事情。

我也試過了-file標誌,並提供了帶有命令的外部文件,但希望在所有內部變量和例程都定義之前嘗試輸入這些命令,因此導致無法識別的命令。

任何人都可以指向我一些關於希望腳本的有用的來源嗎?

回答

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 

這隻有在你有源時纔有效,看起來你是這麼做的。

除了生成事件以在輸入字段中輸入數據之外,只需獲取關聯變量並將其設置爲所需值就容易得多。按鈕很容易。還有組合框(下拉菜單),複選框,比例尺和單選按鈕。我廣泛使用這些方法進行自動化測試,並且工作正常。

您仍然需要閱讀代碼才能找到條目和按鈕名稱。

如果你在Windows上,你也可以嘗試autohotkey程序。

+0

完美的,正是我所期待的。非常感謝你。 – lixpas

+0

只是一個後續問題:是否有可能不顯示GUI,只執行命令?這樣我就不需要X轉發。我想在不直接登錄計算節點的計算機羣集上使用此程序。 – lixpas

+0

我不這麼認爲。也許可以使用虛擬X顯示器(Xvfb)。 –

相關問題