我刚开始学习Tcl。我想写一个简单的程序。当程序启动时,它会打开一个浏览窗口来浏览文件。在那里您可以选择要打开的文件。
然后会弹出一个窗口,询问您是否要选择另一个文件。您选择的每个文件都必须放入一个数组中。
我必须遵循代码:
########## Defining the sub procedures ############
proc open_file {} {
set n 0
set title "Select a file"
set types {
{{GDS files} {.gds} }
{{All Files} * }
}
set filename [tk_getOpenFile -filetypes $types -title $title]
set opendFiles($n) $filename
set n [expr $n + 1]
set answer [tk_messageBox -message "Load another GDS file?" -type yesno -icon question]
if {$answer == yes } {
open_file
} else {
show_files ($opendFiles)
}
}
proc show_files {} {
foreach key [array names opendFiles] {
puts $opendFiles($key)
}
}
########## Main Program ###########
open_file
我有以下问题。因为我总是记得 proc ' open_file
' 变量$n
一直设置为0
. 但是如果不回忆整个子程序,我不知道如何回忆窗口的打开......
第二个问题是将数组发送到下一个过程。当我发送到 proc ' show_files
'时,我总是会收到下一个错误:can't read "opendFiles": variable is array
。
我似乎无法找到两个答案..