2010-07-09 24 views
6

¿Es posible establecer la posición del cursor en un widget de texto Tkinter? No estoy encontrando nada terriblemente útil todavía.Establecer la posición del cursor en un widget de texto

Lo mejor que he podido hacer es emitir un evento <Button-1> y <ButtonRelease-1> en una determinada coordenada x-y, pero esa es una cantidad de píxel, no una cantidad de letra.

Respuesta

7

Si "texto", "línea", "columna" son el objeto de texto, línea de texto deseado y las variables de columna deseada:

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

Si no desea que se preocupan por el número de línea ... bueno, tienes que hacerlo

documentación completa en: http://effbot.org/tkinterbook/text.htm

+0

perfecto! Pensé que podría estar en algún lugar a lo largo de esas líneas, pero no pude resolverlo. ¿Hay algún método relacionado para obtener la posición actual del cursor? –

+3

@Wayne Werner: el método "índice" devolverá el índice de cualquier posición, incluido el cursor de inserción: 'text.index (" insert ")' –

6

Para ajustar la posición del cursor, puede utilizar el método text_widget.mark_set, con "insert" (o Tkinter.INSERT para una “constante”) primer argumento y, para el segundo argumento, uno de los muchos formas, el ser más útil:

  • "%d,%d" % (line, column), donde la línea se basa 1-y la columna se 0-basa
  • "1.0+%d chars" % index, donde el índice se basa 0-Just como un índice de la cadena/Unicode en Python

Para obtener el índice de una marca, se puede utilizar el método de text_widget.index:

text_widget.index(Tkinter.INSERT) 
Cuestiones relacionadas