在 tcl/tk 中添加不同颜色的标签文本

Add label text with different color in tcl/tk

label .f -text "Serial Number" -textvariable lbl -font {bold} -background #808080 
pack .f

在这里,我想要 SerialNumber 不同的颜色。 怎么做?

此外,当我这样做时:

set lbl "Stack Overflow is great"

我想要所有不同颜色的单词。

你必须先为每个单词单独创建一个标签,然后将它们水平打包,让所有的单词都有不同的颜色。也可以参考这个回答here

标签小部件无法自行执行此操作; 设计它非常简单,并且只会为其文本使用一种字体和一种颜色(一次)。

处理此问题的通常方法是改用文本小部件(禁用所有滚动)。那可以做更复杂的事情。

text .t
.t insert end "Serial " -tag word1
.t insert end "Number: " -tag word2
.t tag configure word1 -foreground "#660000"
.t tag configure word2 -foreground cyan

缺点是让文本小部件像您的第二个示例中那样响应变量需要 很多 工作。例如,您需要

  • 写一个变量trace让事物真正响应变量的变化,
  • 实际确定单词边界的位置(以对您的应用有意义的方式),
  • 为单词分配颜色的具体策略
  • 某种方式来控制整个事情(如果您使用的是一组有限的样式,这还算不错),并且
  • 随着内容大小的变化精确控制文本小部件的大小;这非常不是它的正常操作模式,它更侧重于成为一个可滚动、可编辑的超文本小部件。