错误无法读取 "filename":没有这样的变量
Error can't read "filename" : no such variable
我想创建一个函数来将最近打开的文件添加到菜单和命令(事件)以在单击时打开它,但是出现错误
错误:
Error can't read "filename" : no such variable
代码:
proc add_Recentfiles {filename} {
global recentFiles
...
$m insert $recentFiles(index) \
command -label $labelText -command {fileOpen $filename}
...
}
proc fileOpen { filename } {
#refresh textbox
.textarea.txt delete 0.0 end
set fileid [open $filename r]
set data [read $fileid]
.textarea.txt insert end $data
.textarea.l configure -text $filename
addRecentFile $filename
close $fileid
}
看来您延迟对变量的评估时间太长了。而不是
... - command {fileOpen $filename}
尝试
... - command [list fileOpen $filename]
当您使用 {braces}
时,所有变量替换都被禁止,因此该命令变为文字字符串 fileOpen $filename
然后稍后您将尝试打开一个名为“$filename”的文件。
使用 [list fileOpen $filename]
,您允许扩展变量,但还要确保,即使文件名包含空格,您也将恰好将一个参数传递给 fileOpen 过程。
我想创建一个函数来将最近打开的文件添加到菜单和命令(事件)以在单击时打开它,但是出现错误
错误:
Error can't read "filename" : no such variable
代码:
proc add_Recentfiles {filename} {
global recentFiles
...
$m insert $recentFiles(index) \
command -label $labelText -command {fileOpen $filename}
...
}
proc fileOpen { filename } {
#refresh textbox
.textarea.txt delete 0.0 end
set fileid [open $filename r]
set data [read $fileid]
.textarea.txt insert end $data
.textarea.l configure -text $filename
addRecentFile $filename
close $fileid
}
看来您延迟对变量的评估时间太长了。而不是
... - command {fileOpen $filename}
尝试
... - command [list fileOpen $filename]
当您使用 {braces}
时,所有变量替换都被禁止,因此该命令变为文字字符串 fileOpen $filename
然后稍后您将尝试打开一个名为“$filename”的文件。
使用 [list fileOpen $filename]
,您允许扩展变量,但还要确保,即使文件名包含空格,您也将恰好将一个参数传递给 fileOpen 过程。