我目前正在尝试编写一个程序,在Tkinter中为选定文本的两边添加彩色文本。
到目前为止我设法做的是在所选文本的两边添加文本,这是我使用的功能:
def addTerm(self):
self.txt.insert(tk.SEL_FIRST,'\\term{')
self.txt.insert(tk.SEL_LAST,'}' )
所以,如果我有一个WORD并且我选择了它,那么在调用这个函数后它就变成了 \项{word}的。我想知道是否有办法改变我添加的文本的颜色,所以当我使用所选文本的功能时,它会添加' \ term {'和'}'例如,红色,但它不会改变它们之间文本的颜色。
答案 0 :(得分:2)
为周围文字添加标签:
tk.SEL_FIRST + '-6c', tk.SEL_FIRST # for \term{
tk.SEL_LAST, tk.SEL_LAST + '+1c' # for }
使用Text.tag_config(tag_name, background=...)
在以下示例中,我使用term
作为标记名称:
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
class MyFrame(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.txt = tk.Text(self)
self.txt.pack()
self.txt.insert(0.0, 'hello\nworld')
self.btn = tk.Button(self, text='add_term', command=self.add_term)
self.btn.pack()
self.txt.tag_config('term', background='red')
def add_term(self):
self.txt.insert(tk.SEL_FIRST,'\\term{')
self.txt.insert(tk.SEL_LAST,'}' )
self.txt.tag_add('term', tk.SEL_FIRST + '-6c', tk.SEL_FIRST)
self.txt.tag_add('term', tk.SEL_LAST, tk.SEL_LAST + '+1c')
root = tk.Tk()
f = MyFrame(root)
f.pack()
root.mainloop()
<强>更新强>
您可以在调用insert
:
def add_term(self):
self.txt.insert(tk.SEL_FIRST, '\\term{', 'term')
self.txt.insert(tk.SEL_LAST, '}', 'term')
答案 1 :(得分:1)
插入文本时,可以为其指定插入文本时应用于文本的标记的名称:
def addTerm(self):
self.txt.insert(tk.SEL_FIRST,'\\term{',("markup",))
self.txt.insert(tk.SEL_LAST,'}', ("markup",))
然后,您需要将标记配置为具有所需的属性。您可以在第一次创建文本小部件时执行此操作:
self.txt.tag_configure("markup", foreground="gray")
答案 2 :(得分:0)
有点回答:How to change the color of certain words in the tkinter text widget?
您需要在tag
函数中添加init
:
self.txt.tag_configure("COLOR", foreground="red")
你可以这样着色:
self.text.tag_add("COLOR", 1.0 , "sel.first")
self.text.tag_add("COLOR", "sel.last", "end")