Tcl / Tk:"错误的窗口路径名称"当它不是一个窗口路径

时间:2016-10-13 15:50:10

标签: tcl tk

我有没有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"

你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

Tk 定义了一个名为message的命令(它是一个类似于label的小部件,但是有一些不同的自动换行算法;不推荐用于新代码)由于某种原因,这是赢了。虽然您可能会强制使用您的代码,而是source之后直接package require Tk代码,但这不太可能是一个好主意,因为您可能会因为它而发现其他代码中断。 (我不记得它是否目前在标准对话框中使用,但这可能是出错的。)

最简单的方法是更改​​日志记录过程的名称。也许到Message(带大写字母)。这不应该花很长时间,因为它实际上不仅仅是全球搜索和替换。