如何开始突出单词

我正在编写自己的Python编辑器的应用程序。我正在使用“文本”小部件,并希望像在Python编辑器中一样键入单词时突出显示单词。键入字符#后,我要开始以红色突出显示字符#之后的所有字符。

下面是用于此目的的部分代码。当在文本小部件中键入字符#时被识别出来时,我从字符键入到行尾添加了一个“ CM”标签(我认为这样做对我有用)。

import tkinter as tk

def onmodification(event=None):
    c=event.char
    if not c: return
    pos=hT0.index(tk.INSERT)

    if c=='#':
        hT0.tag_add('CM',pos,f'{int(pos.split(".")[0])}.end')
        return

hW=tk.Tk()
hT0=tk.Text(hW,wrap='none',font=('Times New Roman'12))
hT0.insert('end','')
hT0.place(x=27,y=0,height=515,width=460)
hT0.bind('<Key>',onmodification)
hT0.tag_config('CM',foreground='#DD0000')

但是输出突出显示了即使没有键入字符#也仅突出显示已经存在的字符。 我想要的工作想法? 提前非常感谢您。

chenyd214 回答:如何开始突出单词

我从Get position in tkinter Text widget

获得了一个想法
def onModification(event=None):
    ...
    pos=hT0.index(tk.INSERT)
    lineN,ColN=[int(c) for c in pos.split('.')]
    if c=='#':
        #hT0.tag_add('CM',pos,f'{int(pos.split(".")[0])}.end')
        hT0.tag_add('CM',f'{lineN}.{ColN-1}',f'{lineN}.end')
        return

...
#hT0.binds('<key>',onModification) needs to be changed to...

hT0.bindtags(('Text','post-class-bindings','.','all'))
hT0.bind_class('post-class-bindings','<KeyPress>',onModification)
本文链接:https://www.f2er.com/3147698.html

大家都在问