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

在这里,我想要Serial不同的颜色而不是Number不同的颜色。怎么做?

另外,当我这样做时:

set lbl "Stack Overflow is great"

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

4

2 回答 2

1

You have to first create a label of each word individually, and then pack them horizontally to get all the words in a different color. Also you can refer to this answer here

于 2020-11-24T13:15:40.983 回答
1

标签小部件不能单独执行此操作;按照设计,它非常简单,并且(一次)只使用一种字体和一种颜色。

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

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,以便事物真正响应变量的变化,
  • 实际确定单词边界的位置(以对您的应用程序有意义的方式),
  • 为单词分配颜色的具体策略
  • 某种方式来控制整个事情(如果您使用有限的样式集,这还不错),和
  • 在其内容大小发生变化时准确控制文本小部件的大小;这很不是它的正常操作模式,它更专注于成为一个可滚动的可编辑超文本小部件。
于 2020-11-24T21:24:26.177 回答