我无法弄清楚如何使用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
的回调函数的一部分,因此每次值更改时文本的大小都会更改。
这段代码效果很好,但是如果我尝试对第二行文本进行样式化,则会采用第一行的样式。
答案 0 :(得分:1)
如果您希望每个范围都有独特的样式,则需要使用唯一标记,因为样式信息属于标记而不是文本范围。最简单的方法是保留每次添加标记时递增的全局(或实例属性)计数器,并将其用作标记名称的一部分。
答案 1 :(得分: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语句,该语句位于标记上,该标记是包含SEL标记索引的变量。