anfangs- und endindex von markiertem text

Fragen zu Tkinter.
Antworten
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

Ich brauch mal wieder eure Hilfe!
Kann mir jemand sagen, wie ich den Anfangsindex und den Endindex von markiertem Text in einem Text()-Feld bekommen kann?
ich dachte da an

Code: Alles auswählen

TextBox.selection_own()
index1=TextBox.index(INSERT)
index2=index1+/-len(text)
(so in der art)
aber ich weis dadurch ja nciht ob der curser am anfang oder am ende des makierten textes steht...
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

keiner ne ahnung?
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Meine Suche mit google ergab:
Tkinter provides a number of different index types:
...
selection (SEL_FIRST, SEL_LAST)
...
--> http://effbot.org/tkinterbook/text.htm

und
SEL_FIRST
If some of the text in the widget is currently selection (as by dragging the mouse over it), this is the position before the start of the selection. If you try to use this index and nothing is selected, a TclError exception will be raised.

SEL_LAST
The position after the end of the selection, if any. As with SEL_FIRST, you'll get a TclError exception if you use such an index and there is no selection.
--> http://infohost.nmt.edu/tcc/help/pubs/t ... index.html

Schau mal, ob es dir schon weiterhilft.

cu Sebastian
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

Danke Mr_Snede!
funktioniert prima...
man muss nur nacheinander abfragen: erst den anfangsindex und dann den endindex...
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Magst du ein lauffähiges Beispiel unter "Codesnippets" stellen?

Ich meine was klitze kleines:
Textwidget mit etwas Text und einem Button, der bei Betätigung die Positionen auf der Konsole ausgibt.

cu Sebastian
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

meine idee war eigentlich ein kleiner editor, mit dem man html-tags am anfang und am ende des markierten textes setzen kann... so ich mach mal ein kleines beispiel und stell es zu den codesnippets...
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
BlackJack

So sähe ein einfaches Beispiel aus:

Code: Alles auswählen

import Tkinter as Tk

def selection_printer(text_widged):
    def print_selection():
        try:
            print map(text_widged.index, (Tk.SEL_FIRST, Tk.SEL_LAST))
        except Tk.TclError:
            print 'no selection'
    return print_selection

root = Tk.Tk()

text = Tk.Text(root)
text.insert(Tk.INSERT, 'The knights who say Ni!')
text.focus()
text.pack()

button = Tk.Button(root, text='Test', command=selection_printer(text))
button.pack()

root.mainloop()
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

ich hab ein etwas großerse beispiel unter codesnippets reingestellt...
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
Antworten