1

我正在尝试将注释添加到不被更改的给定文本中。这很像普通文本编辑器中的格式。

我试图通过 获取当前光标位置.index('insert'),然后用 向前tag_add(current cursor, current cursor '+1c')或向后标记字符tag_add(current cursor + '-1c', current cursor)。这导致在刚刚键入的字符之前或之后标记字符。

是否有任何解决方法来实时标记实际键入的字符?

import tkinter


main = tkinter.Tk()

def typing(event):
    text.tag_configure('note', background='yellow')
    text.tag_configure('note2', background='blue')
    cur_cursor = text.index("insert")
    text.tag_add('note', cur_cursor + '-1c', cur_cursor)
    text.tag_add('note2', cur_cursor, cur_cursor + '+1c')

text = tkinter.Text(main)
text.grid()
text.bind('<Key>', typing)

for i in ['OX'*20 + '\n' for i in range(10)]:
    text.insert('end', i)

main.mainloop()

编辑:虽然布莱恩的回答对我有用,但您可能会遇到快速打字的问题,如下所述:how-to-get-cursor-position

4

1 回答 1

1

最简单的解决方案是绑定 on<KeyRelease>而不是<Key>. <Key>原因是文本小部件在其自己的绑定触发之前实际上不会插入您键入的字符,并且该绑定总是在您在小部件上进行的任何自定义绑定之后触发。

于 2015-03-11T14:03:12.053 回答