开发者

Set cursor position in a Text widget

Is it possible to set the cursor 开发者_运维知识库position in a Tkinter Text widget? I'm not finding anything terribly useful yet.

The best I've been able to do is emit a <Button-1> and <ButtonRelease-1> event at a certain x-y coordinate, but that is a pixel amount, not a letter amount.


If "text", "line", and "column" are your text object, the desired text line and desired column variables are, respectively:

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

If you would not like to care about the line number... well, you have to.

Complete documentation at The Tkinter Text Widget.


To set the cursor position, you can use the text_widget.mark_set method, with "insert" (or Tkinter.INSERT for a “constant”) first argument and, for the second argument, one of many forms, the most useful being:

  • "%d,%d" % (line, column), where line is 1-based and column is 0-based
  • "1.0+%d chars" % index, where index is 0-based just like a string/unicode index in Python

To get the index of a mark, you can use the text_widget.index method:

text_widget.index(Tkinter.INSERT)


This property is just for Text Widget, because for Entry Widget we could use:

entry_widget_name.icursor("position")

For Text Widget will be:

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

where x = row position y = column position

(using integer numbers with dots like 1.0 or 3.0 for example)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜