在“文本”小部件中设置光标位置

时间:2010-07-09 18:36:40

标签: python tkinter cursor-position

是否可以在Tkinter Text小部件中设置光标位置?我找不到任何非常有用的东西。

我能做的最好的事情是在某个x-y坐标处发出<Button-1><ButtonRelease-1>事件,但这是一个像素数量,而不是字母数量。

3 个答案:

答案 0 :(得分:9)

如果“text”,“line”和“column”是您的文本对象,则所需的文本行和所需的列变量分别为:

text.mark_set("insert", "%d.%d" % (line + 1, column + 1))

如果您不想关心行号...那么,您必须这样做。

完整文档: http://effbot.org/tkinterbook/text.htm

答案 1 :(得分:7)

要设置光标位置,可以使用text_widget.mark_set方法,"insert"(或Tkinter.INSERT表示“常量”)第一个参数,对于第二个参数,可以使用许多形式,最有用的是:

  • "%d,%d" % (line, column),其中line是从1开始的,而column是从0开始的
  • "1.0+%d chars" % index,其中index是基于0的,就像Python中的字符串/ unicode索引一样

要获取标记的索引,可以使用text_widget.index方法:

text_widget.index(Tkinter.INSERT)

答案 2 :(得分:0)

此属性仅适用于Text Widget,因为对于Entry Widget,我们可以使用:

entry_widget_name.icursor("position")

对于Text Widget将是:

text_widget_name.mark_set("insert", "%d.%d" % (x,y))

其中x =行位置 y =列位置

(使用带点的整数,例如1.0或3.0)