使用tkinter动态文本标记

1 投票
2 回答
1002 浏览
提问于 2025-04-16 22:35

我搞不明白的是,如何在Tkinter的文本小部件中动态地给一段文本加标签。我的想法是,当用户选择一段文本时,它会动态创建一个标签来修改样式。

#...code...
tag = text_field.tag_ranges(SEL)
text_field.tag_add('sizesel',tag[0],tag[1])
text_field.tag_config('sizesel',font = appFont)

这段代码是一个回调函数的一部分,这个函数和一个Combobox绑定在一起,所以每次值改变时,文本的大小就会变化。

这段代码运行得很好,但如果我想给第二行文本加样式,它却会使用第一行的样式。

2 个回答

1

这是我怎么做的:

tag = text_field.tag_ranges(SEL)
i = 0
for i in tag:
    text_field.tag_add(i,tag[0],tag[1])
    text_field.tag_config(i,font = appFont)

你可以看到,我加了一个简单的for循环,这个循环是针对一个叫做tag的变量,它里面存储了SEL标签的索引。

2

如果你想给每个范围设置独特的样式,你需要使用一个独特的标签,因为样式信息是属于标签的,而不是文本的范围。最简单的方法是保持一个全局的(或者实例的)计数器,每次你添加一个标签的时候就把这个计数器加一,然后把这个计数器的值用作标签名称的一部分。

撰写回答