2010-07-09 18 views
6

Czy można ustawić pozycję kursora w widgecie Tekst Tkinter? Nie znajduję nic strasznie przydatnego.Ustawianie pozycji kursora w widgecie Tekst

Najlepsze, co udało mi się zrobić, to emitować zdarzenie <Button-1> i <ButtonRelease-1> z pewną współrzędną x-y, ale jest to wielkość piksela, a nie liczba liter.

Odpowiedz

7

Jeśli „tekst”, „linia”, „kolumna” to Twój obiekt tekstowy, żądany wiersz tekstu i pożądane zmienne kolumna:

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

Jeśli nie chciałby dbać o liczbie linii ... cóż, musisz.

Kompletna dokumentacja w: http://effbot.org/tkinterbook/text.htm

+0

Perfect! Myślałem, że może to być gdzieś w tym kierunku, ale nie mogłem tego rozgryźć. Czy istnieje odpowiednia metoda uzyskiwania aktualnej pozycji kursora? –

+3

@Wayne Werner: metoda "index" zwróci indeks dowolnej pozycji włączając kursor wstawiania: 'text.index (" insert ")' –

6

Aby ustawić położenie kursora, można użyć metody text_widget.mark_set z "insert" (lub Tkinter.INSERT na „stałe”) pierwszego argumentu, a dla drugiego argumentu, jeden z wielu formy, najbardziej użyteczne są:

  • "%d,%d" % (line, column), gdzie linia 1 oparte jest 0 i kolumny opartej
  • "1.0+%d chars" % index, gdzie indeks 0 oparte tylko jak indeks ciąg/Unicode w Pythonie

aby uzyskać indeks znaku, można użyć metody text_widget.index:

text_widget.index(Tkinter.INSERT) 
Powiązane problemy