IDLE 使用 tag_config 对 Python 代码进行语法着色,并且在过去 15 年中它适用于所有 Python 版本和主要操作系统。
要了解它为什么对您来说似乎失败了,您需要找到一个失败的MCVE。开始时不使用 tix 和滚动条。 (Tix 在 3.6 中已弃用,并且错误未得到修复。)另请注意,您的代码对每个选择使用相同的标记,因此当您更改配置时,它适用于所有以前的选择。
这是按预期和预期工作的简化代码。
import tkinter as tk
import time
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.insert('1.0', "line 1\nline 2\nline 3\n")
text.tag_add('bg', '1.0', '1.4')
text.tag_config('bg', background='red')
root.update()
time.sleep(1)
text.tag_add('bg', '2.0', '2.4')
text.tag_config('bg', background='blue')
root.update()
您可以尝试逐步修改它,直到它重现您的问题或执行您想要的操作。
使用示例修改进行编辑:使用“sel.first”和“sel.last”而不是硬编码索引。
import tkinter as tk
import time
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.insert('1.0', "line 1\nline 2\nline 3\n")
root.update() # make text visible for selection
input('select some text')
text.tag_add('bg', 'sel.first', 'sel.last')
text.tag_config('bg', background='red')
root.update() # make change visible
input('select some text')
text.tag_add('bg', 'sel.first', 'sel.last')
text.tag_config('bg', background='blue')
root.update() # make 2nd change visible
input('look at result')
在控制台中运行。移动 tk 窗口,使控制台和 GUI 都可见。根据提示进行选择。单击控制台* 并按回车键以允许输入语句返回。重复。对我来说,结果是两个选项(但不是所有选项)都变成蓝色。我建议在下一个实验中更改字体而不是 bg 颜色。
- 在 Windows 上,在 tk 窗口中突出显示的选择会在单击控制台时消失,因为 Windows 一次只允许在一个窗口中进行可见选择。但是,选择标记仍然存在于文本小部件中,因此 tag_add 仍然有效。