Tcl/Tk: "bad window path name" 当它不是 window 路径时
Tcl/Tk: "bad window path name" when it is not a window path
我有没有使用 Tk 的脚本。当我添加 Tk 时,一行被视为 window 的路径,我不明白为什么。
错误信息如下:
bad window path name "* Log directory: D:/tests/log/2016_10_13_17_30_29"
就是执行这行的时候:
message "* Log directory: ${dirname}"
dirname
解析为目录路径,例如:
D:/tests/log/2016_10_13_17_30_29
message
是一个简单的记录到文件的过程:
proc message {text} {
global test_log_filename
puts -nonewline $test_log_filename "[timestamp] "
puts $test_log_filename $text
}
当我不使用 Tk 时它工作正常。据我了解,它采用 message
过程参数作为 Tk window 的路径,但我不知道为什么。这样的window当然不存在
我还尝试调用 message test
之类的东西来确认这是参数问题。它给出错误 bad window path name "test"
你能帮忙吗?
Tk also 定义了一个名为 message
的命令(它是一个类似于 label
的小部件,但使用了稍微不同的自动换行算法;它是不推荐用于新代码)并且出于某种原因,它胜出。虽然您可能会通过在 package require Tk
之后直接 source
ing 您的代码来强制使用您的代码,但这不太可能是一个好主意,因为您可能会发现一些其他代码因此而中断。 (我不记得它目前是否在标准对话框中使用,但这是可能出错的事情。)
最简单的方法是更改日志程序的名称。也许到 Message
(大写字母)。这应该不会花很长时间,因为它实际上只不过是全球搜索和替换。
我有没有使用 Tk 的脚本。当我添加 Tk 时,一行被视为 window 的路径,我不明白为什么。
错误信息如下:
bad window path name "* Log directory: D:/tests/log/2016_10_13_17_30_29"
就是执行这行的时候:
message "* Log directory: ${dirname}"
dirname
解析为目录路径,例如:
D:/tests/log/2016_10_13_17_30_29
message
是一个简单的记录到文件的过程:
proc message {text} {
global test_log_filename
puts -nonewline $test_log_filename "[timestamp] "
puts $test_log_filename $text
}
当我不使用 Tk 时它工作正常。据我了解,它采用 message
过程参数作为 Tk window 的路径,但我不知道为什么。这样的window当然不存在
我还尝试调用 message test
之类的东西来确认这是参数问题。它给出错误 bad window path name "test"
你能帮忙吗?
Tk also 定义了一个名为 message
的命令(它是一个类似于 label
的小部件,但使用了稍微不同的自动换行算法;它是不推荐用于新代码)并且出于某种原因,它胜出。虽然您可能会通过在 package require Tk
之后直接 source
ing 您的代码来强制使用您的代码,但这不太可能是一个好主意,因为您可能会发现一些其他代码因此而中断。 (我不记得它目前是否在标准对话框中使用,但这是可能出错的事情。)
最简单的方法是更改日志程序的名称。也许到 Message
(大写字母)。这应该不会花很长时间,因为它实际上只不过是全球搜索和替换。