2010-12-09 4 views
1

Unter this page describing the Tkinter text widget steht, dass 'Die Auswahl ist ein spezielles Tag namens SEL (oder "sel"), das der aktuellen Auswahl entspricht. Mit den Konstanten SEL_FIRST und SEL_LAST können Sie auf die Auswahl verweisen. Wenn es keine Auswahl gibt, löst Tkinter eine TclError-Ausnahme aus.Gibt es eine effiziente Möglichkeit zu sagen, ob Text in einem Tkinter Text Widget ausgewählt ist?

Meine Frage: Gibt es eine effizientere Möglichkeit zu sagen, ob es eine Auswahl in einem Text-Widget neben dem Täuschen mit Ausnahmen gibt, wie der folgende Code?

Antwort

4

Sie können das Widget nach dem Textbereich fragen, den der Tag "sel" enthält. Wenn keine Auswahl vorhanden ist, hat der Bereich die Länge 0:

if txt.tag_ranges("sel"): 
    print "there is a selection" 
else: 
    print "there is no selection" 
+0

Es sollte angemerkt werden, dass "tag_ranges" eine Liste von Textbereichen zurückgibt, die den Tag-Namen haben. Dies kann nützlich sein, wenn Sie sie brauchen (wie ich es in diesem speziellen Moment tue, weshalb ich sie kommentiert habe). – Shule

1

Hier können Sie überprüfen, ob ein bestimmter Speicherort ausgewählt wurde.

if "sel" in myTextWidget.tag_names(INSERT): #use 'not in' to see if it's not selected 
    print("INSERT to 'insert+1c' is selected text!"); 

Ich weiß nicht, warum sie nicht lassen Sie einen zweiten Index dort drin. Ich weiß auch nicht, dass dies für den Prozessor effizienter ist als Ihre Version, aber es scheint mehr Standard zu sein als das, was ich sagen kann.