2010-07-09 28 views
6

È possibile impostare la posizione del cursore in un widget Tkinter Text? Non sto ancora trovando nulla di molto utile.Imposta la posizione del cursore in un widget di testo

Il meglio che ho potuto fare è emettere un evento <Button-1> e <ButtonRelease-1> a una certa coordinata x-y, ma quella è una quantità di pixel, non una quantità di lettere.

risposta

7

Se "testo", "linea", "colonna" sono l'oggetto di testo, riga di testo desiderato e variabili di colonna desiderate:

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

Se non desidera preoccuparsi del numero di riga ... bene, devi.

La documentazione completa all'indirizzo: http://effbot.org/tkinterbook/text.htm

+0

Perfetto! Ho pensato che potrebbe essere da qualche parte lungo quelle linee, ma non riuscivo a capirlo. Esiste un metodo correlato per ottenere la posizione corrente del cursore? –

+3

@Wayne Werner: il metodo "index" restituirà l'indice di qualsiasi posizione incluso il cursore di inserimento: 'text.index (" insert ")' –

6

Per impostare la posizione del cursore, è possibile utilizzare il metodo text_widget.mark_set, con "insert" (o Tkinter.INSERT per una “costante”) primo argomento e, per il secondo argomento, uno dei tanti forme, i più utili:

  • "%d,%d" % (line, column), dove la linea è 1-based e colonna è 0-basa
  • "1.0+%d chars" % index, dove indice è 0-basa solo come un indice di stringa/unicode in Python

Per ottenere l'indice di un marchio, è possibile utilizzare il metodo text_widget.index:

text_widget.index(Tkinter.INSERT) 
Problemi correlati