2010-03-23 35 views

回答

8

試試這個代碼,如果它做你需要的東西:

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

自從3.2版本,GTK +支持GtkEntry中的佔位符,而是要利用它與Python的唯一方法是通過使用PyGobject代替PyGTK的。

問候

+0

嗨eagleoneraptor,歡迎計算器,謝謝替代方案。 – 2012-01-02 00:37:10

0

可以使用PyGobject代替PyGTK的,然後設置一個佔位符是小菜一碟: entry.set_placeholder_text(「一些字符串」)