我有没有Tk使用的脚本。当我添加Tk时,一行被视为窗口的路径,我不明白为什么。
错误信息如下:
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窗口的路径,但我不知道为什么。当然这样的窗口不存在。
我还尝试调用message test
之类的东西来确认它是参数问题。它给出了错误bad window path name "test"
你能帮忙吗?
答案 0 :(得分:2)
Tk 还定义了一个名为message
的命令(它是一个类似于label
的小部件,但是有一些不同的自动换行算法;不推荐用于新代码)由于某种原因,这是赢了。虽然您可能会强制使用您的代码,而是source
之后直接package require Tk
代码,但这不太可能是一个好主意,因为您可能会因为它而发现其他代码中断。 (我不记得它是否目前在标准对话框中使用,但这可能是出错的。)
最简单的方法是更改日志记录过程的名称。也许到Message
(带大写字母)。这不应该花很长时间,因为它实际上不仅仅是全球搜索和替换。