2010-03-23 4 views

Répondre

8

Essayez ce code s'il fait ce que vous avez besoin:

import gtk 


class PlaceholderEntry(gtk.Entry): 

    placeholder = 'Username' 
    _default = True 

    def __init__(self, *args, **kwds): 
     gtk.Entry.__init__(self, *args, **kwds) 
     self.connect('focus-in-event', self._focus_in_event) 
     self.connect('focus-out-event', self._focus_out_event) 

    def _focus_in_event(self, widget, event): 
     if self._default: 
      self.set_text('') 
      self.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) 

    def _focus_out_event(self, widget, event): 
     if gtk.Entry.get_text(self) == '': 
      self.set_text(self.placeholder) 
      self.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('gray')) 
      self._default = True 
     else: 
      self._default = False 

    def get_text(self): 
     if self._default: 
      return '' 
     return gtk.Entry.get_text(self) 


if __name__ == '__main__': 
    w = gtk.Window() 
    vbox = gtk.VBox() 
    w.add(vbox) 
    vbox.pack_start(PlaceholderEntry()) 
    quitbtn = gtk.Button(stock=gtk.STOCK_QUIT) 
    quitbtn.connect('clicked', gtk.main_quit) 
    vbox.pack_start(quitbtn) 
    w.connect('destroy', gtk.main_quit) 
    w.show_all() 
    gtk.main() 
4

Depuis la version 3.2, GTK + prend en charge l'espace réservé GtkEntry, mais la seule façon de profiter avec Python est à l'aide PyGobject au lieu de PyGtk.

Cordialement

+0

Salut eagleoneraptor, bienvenue à stackoverflow, merci pour l'alternative. –

0

Vous pouvez utiliser pygobject au lieu de pygtk, puis définir un espace réservé est un morceau de gâteau: entry.set_placeholder_text (« ficelle »)