2008-10-01 2 views
2

Betrachten Sie dieses Python-Programm, das PyGtk und Hippo Canvas verwendet, um eine anklickbare Textbeschriftung anzuzeigen. Durch Klicken auf das Textlabel wird es durch ein Hippo CanvasEntry-Widget ersetzt, das den Text des Labels enthält.Programmatisch fokussieren ein hippo.CanvasEntry?

Wie kann der CanvasEntry, der beim Klicken auf die Beschriftung erstellt wird, automatisch zum Zeitpunkt der Erstellung aktiviert werden?

Antwort

2

Unter der CanvasEntry gibt es eine regelmäßige alte gtk.Entry, die Sie den Fokus anfordern müssen, sobald es sichtbar gemacht wird. Hier ist eine modifizierte Version Ihrer textClicked Funktion, die genau das tut:

def textClicked(text, event, row): 
    input = hippo.CanvasEntry() 
    input.set_property('text', text.get_property('text')) 
    entry = input.get_property("widget") 
    def grabit(widget): 
     entry.grab_focus() 
    entry.connect("realize", grabit) 
    parent = text.get_parent() 
    parent.insert_after(input, text) 
    parent.remove(text)