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)
精彩评论