如何使用tcl中的puts更改颜色文本

时间:2014-08-27 05:17:55

标签: tcl

我想通过在tcl中使用puts命令来更改控制台中显示的文本颜色,以简化调试。我看到很多文章是abt tk但不是tcl。 fyi,我在Windows 7上使用了活动的tcl。

我尝试过其他人提供的以下代码(http://www.tek-tips.com/viewthread.cfm?qid=1283356)但是徒劳无功: puts "Why not \033\[34mG\033\[31mo\033\[33mo\033\[34mg\033\[32ml\033\[31me\033\[0m first ?"

请咨询。

1 个答案:

答案 0 :(得分:7)

你引用的代码适用于我(OSX,Terminal.app; Tcl 8.4,8.5和8.6),我希望它在Linux上也能正常工作。 (它在Windows上是不同的,其中控制台以非常不同的方式工作。)在Linux上失败的原因表明问题不在Tcl中,而在其他地方;我猜它是在你的终端,它不想兑现颜色代码。另一个外在的机会是你的终端出于某种原因更喜欢不同的逃脱序列。

解决第二个问题的方法是:

proc color {foreground text} {
    # tput is a little Unix utility that lets you use the termcap database
    # *much* more easily...
    return [exec tput setaf $foreground]$text[exec tput sgr0]
}

puts "Why not [color 4 G][color 1 o][color 3 o][color 4 g][color 2 l][color 1 e] first?"
# Hmm, that's clearer than using those escapes directly too!

如果这是第一个问题 - 您的终端只是没有做好颜色 - 那么您就会陷入困境,直到您更换终端。对不起,这真的很简单。