Python 3.x Tkinter标签的优先级
我知道这是一个重复的问题,但另一个问题没有一个有效的答案,有点让人困惑 将标记添加到tkinter文本小部件时,第一个标记将获得优先级。如果最新添加的标签获得优先权,我会更喜欢它。在我的最小可复制示例中:Python 3.x Tkinter标签的优先级,python-3.x,tkinter,priority-queue,Python 3.x,Tkinter,Priority Queue,我知道这是一个重复的问题,但另一个问题没有一个有效的答案,有点让人困惑 将标记添加到tkinter文本小部件时,第一个标记将获得优先级。如果最新添加的标签获得优先权,我会更喜欢它。在我的最小可复制示例中: import tkinter as tk win = tk.Tk() txt = tk.Text(win) txt.grid(row=0, column=0) txt.insert('1.1', 'Hello Very Worldy World!') txt.tag_add('tago
import tkinter as tk
win = tk.Tk()
txt = tk.Text(win)
txt.grid(row=0, column=0)
txt.insert('1.1', 'Hello Very Worldy World!')
txt.tag_add('tagone', '1.2', '1.4')
txt.tag_config('tagone', foreground='yellow')
txt.tag_add('tagtwo', '1.7', '1.13')
txt.tag_config('tagtwo', foreground='purple')
txt.tag_add('tagone', '1.6', '1.14')
txt.tag_config('tagone', foreground='yellow')
tk.mainloop()
如果您运行它,您将看到紫色标记出现在前景中,而不是黄色标记。有没有办法根据时间顺序来定义标记优先级,而不是它现在使用的是什么?标记优先级是基于创建标记的时间,而不是应用标记的时间 发件人: 如果将多个标记附着到一系列文本,则最近创建的标记中的样式选项将替代早期标记中的选项。在下面的示例中,生成的文本是黄色背景上的蓝色 请注意,将标记附加到范围的顺序并不重要;重要的是标记创建顺序 您可以使用
标记提升
和标记降低
更改标记优先级。如果将text.tag\u lower(“a”)
添加到上述示例中,文本将变为红色
因为您在
tagtwo
之前创建了tagone
,tagtwo
获得优先权。您可以通过给第三个范围指定一个新名称(tagthree
),在创建tagone
之前创建tagtwo
,或者使用txt.tag\u lower('tagtwo')
/txt.tag\u raise('tagone')
,如果您说我知道这是重复的
,那么您就可以得到您所期望的行为,指定您认为是/可以是重复的问题很有用。这使得评估索赔变得更容易没有有效的答案,而且有点让人困惑。
text.tag_config("n", background="yellow", foreground="red")
text.tag_config("a", foreground="blue")
text.insert(contents, ("n", "a"))