我想在tkinter文本小部件中创建自动完成功能。当自动填充找到可能的单词时,它会删除用户的词性,然后插入完整的单词:
#if some matched words are found
if self._hits != []:
#delete the part written by the user
self.text.delete("%s+1c" % Space1Index,INSERT)
#Inser the complete word
self.text.insert("%s+1c" % Space1Index,self._hits[self._hit_index])
然后我会将自动填充添加的文本标记为具有与用户输入不同的外观。例如,如果用户写了te
,则自动填充功能会写出完整的单词test
。 te
将使用普通字体,st
将以其他颜色写入,并等待用户通过计算机确认所选单词。
我的问题是,在插入单词test
并正确突出显示后,如何在te
之后再次移动INSERT位置?
我希望我能够充分澄清我的问题,如果需要更多解释,请告诉我。
答案 0 :(得分:2)
要移动插入光标,请将“插入”标记设置为您想要的位置:
self.text.mark_set("insert", "%s+1c" % ...)
-OR -
self.text.mark_set(INSERT, "%s+1c" % ...)
答案 1 :(得分:1)
您可以在自动完成更改之前保存插入标记的位置,并在以下情况后将标记重置为保存位置:
old_pos = self.text.index("insert")
# make autocompletion changes
self.text.mark_set("insert", old_pos)