在文本小部件中设置光标位置
在Tkinter的文本框里,可以设置光标的位置吗?我还没找到什么特别有用的资料。
我目前能做到的就是在某个x-y坐标上发出一个<Button-1>
和<ButtonRelease-1>
事件,但这个坐标是以像素为单位的,而不是以字母为单位的。
3 个回答
2
这个属性只适用于文本小部件(Text Widget),因为对于输入小部件(Entry Widget),我们可以使用:
entry_widget_name.icursor("position")
而对于文本小部件,我们会使用:
text_widget_name.mark_set("insert", "%d.%d" % (x,y))
这里的 x 是行的位置,y 是列的位置。
(使用带小数点的整数,比如 1.0 或 3.0 这样的格式)
9
要设置光标的位置,你可以使用 text_widget.mark_set
这个方法。第一个参数是 "insert"
(或者用 Tkinter.INSERT
作为常量),第二个参数可以有很多种形式,最常用的有:
"%d,%d" % (line, column)
,这里的 line 是从 1 开始计数的,而 column 是从 0 开始计数的"1.0+%d chars" % index
,这里的 index 也是从 0 开始计数,就像 Python 中字符串的索引一样
如果你想获取某个标记的位置,可以使用 text_widget.index
这个方法:
text_widget.index(Tkinter.INSERT)
12
如果“text”、“line”和“column”是你的文本对象,那么你想要的文本行和列变量分别是:
text.mark_set("insert", "%d.%d" % (line + 1, column + 1))
如果你不想关心行号……那你就得关心。
完整的文档可以在 Tkinter文本小部件 找到。