2014-02-18 24 views
0

我想在tkinter文本小部件中创建自动完成功能。当自动完成发现一个可能的话,它会删除用户部分的字,然后将完整的词: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,自动完成将会写出完整的单词testte将使用正常字体,st将以另一种颜色写入,并等待用户通过计算机确认所选字词。

我的问题是,在插入单词test并正确突出显示后,如何在te之后再次移动INSERT位置?

我希望我能澄清我的问题,请让我知道是否需要更多解释。

+1

你可能想改变你的问题的标题。它提到了自动完成,但实际的问题是关于设置插入光标。 –

回答

2

要移动插入光标,设置“插入”标志,以任何你想要的:

self.text.mark_set("insert", "%s+1c" % ...) 

- 或 -

self.text.mark_set(INSERT, "%s+1c" % ...) 
1

您可以保存插入标记的位置自动完成你之前修改后的标志复位到保存的位置:

old_pos = self.text.index("insert") 
# make autocompletion changes 
self.text.mark_set("insert", old_pos) 
+0

谢谢!你有没有关于文本小部件的很好的参考资料..我发现了一些在线,但没有足够的例子或解释。 – yassin

+1

我想你的意思是self.text.mark_set('“insert”',old_pos) – yassin

+0

是的,我修改了我的答案。有关参考资料,请访问http://www.tkdocs.com。非常好,但不是所有的部件都覆盖(还)。最终的文档是http://www.tcl.tk/man/tcl8.5/TkCmd/contents.htm它适用于tcl,但功能在tkinter中几乎完全相同。 – mgautierfr

相关问题