2010-03-23 76 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(“一些字符串”)