【问题标题】:Add label text with different color in tcl/tk在 tcl/tk 中添加不同颜色的标签文本
【发布时间】:2020-11-25 05:24:26
【问题描述】:
label .f -text "Serial Number" -textvariable lbl -font {bold} -background #808080 
pack .f

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

另外,当我这样做时:

set lbl "Stack Overflow is great"

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

【问题讨论】:

    标签: tcl tcltk


    【解决方案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,这样事情就可以真正响应变量的变化,
    • 实际确定单词边界的位置(以对您的应用有意义的方式),
    • 为单词分配颜色的具体策略
    • 以某种方式控制整个事情(如果您使用有限的样式集,这还不错),并且
    • 在其内容大小发生变化时准确控制文本小部件的大小;这与它的正常操作模式非常不同,它更专注于成为可滚动的可编辑超文本小部件。

    【讨论】:

    • 这不是一个详尽的列表,顺便说一句。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      相关资源
      最近更新 更多