使用tkinter动态文本标记
我搞不明白的是,如何在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
如果你想给每个范围设置独特的样式,你需要使用一个独特的标签,因为样式信息是属于标签的,而不是文本的范围。最简单的方法是保持一个全局的(或者实例的)计数器,每次你添加一个标签的时候就把这个计数器加一,然后把这个计数器的值用作标签名称的一部分。