2008-10-01 6 views
2

Considérons ce programme Python qui utilise PyGtk et Hippo Canvas pour afficher une étiquette de texte cliquable. Cliquer sur l'étiquette de texte la remplace par un widget Hippo CanvasEntry qui contient le texte de l'étiquette.Mise au point par programmation d'un hippo.CanvasEntry?

import pygtk 
pygtk.require('2.0') 
import gtk, hippo 

def textClicked(text, event, row): 
    input = hippo.CanvasEntry() 
    input.set_property('text', text.get_property('text')) 
    parent = text.get_parent() 
    parent.insert_after(input, text) 
    parent.remove(text) 

def main(): 
    canvas = hippo.Canvas() 
    root = hippo.CanvasBox() 
    canvas.set_root(root) 

    text = hippo.CanvasText(text=u'Some text') 
    text.connect('button-press-event', textClicked, text) 
    root.append(text) 

    window = gtk.Window() 
    window.connect('destroy', lambda ignored: gtk.main_quit()) 
    window.add(canvas) 

    canvas.show() 
    window.show() 

    gtk.main() 

if __name__ == '__main__': 
    main() 

Comment le CanvasEntry créé lorsque l'on clique sur l'étiquette de texte est-il automatiquement focalisé au moment de la création?

Répondre

2

Sous le CanvasEntry, il y a un ancien gtk.Entry dont vous avez besoin pour demander le focus dès qu'il est visible. Voici une version modifiée de votre fonction textClicked qui fait exactement cela:

Questions connexes