在Tkinter文本控件中使用标签的Python方法

4 投票
2 回答
15823 浏览
提问于 2025-04-16 17:27

我正在尝试在Tkinter的文本小部件中用标签给文字上色,方法如下:

text = self.text_field.get(1.0, 'end') #text_field is a text widget
s = re.findall("\d+", text)
for i in s:
    self.text_field.tag_add(i, '1.0', 'end')
    self.text_field.tag_configure(i, background='yellow', 
                                  font='helvetica 14 bold', relief='raised')

我的想法是,所有的标签都是动态创建的,因为我从文本小部件中获取数字,而这些数字的长度可以不一样。这个代码会把小部件中的所有文字都上色,但我只想给数字上色。

有什么建议吗?

2 个回答

4

有一个类似问题的回答,里面展示了如何扩展文本小部件,让它可以根据正则表达式来高亮显示文本。想了解更多例子,可以查看这个链接:如何在tkinter的文本小部件中高亮显示文本

5

当你执行

tag_add(i, '1.0', 'end')

时,你实际上是在创建一个覆盖整个文本区域的标签。你需要做的是只在数字上添加文本,使用正则表达式匹配的 .start().stop() 方法。

这里有一个关于如何做语法高亮的例子:
http://forums.devshed.com/python-programming-11/syntax-highlighting-172406.html

撰写回答