2010-08-12 5 views
2

Est-il possible de faire un ComboBox consultable? Si oui, comment? Je veux être en mesure, lorsque le ComboBox est actif et une lettre est tapée avec le clavier, de sélectionner le premier élément commençant par cette lettre dans le ComboBox et ainsi de suite avec les lettres suivantes.GTK/PyGTK faire une recherche ComboBox avec le clavier

La fonctionnalité est identique à celle d'une zone de liste déroulante dans une page Web, par exemple.

Je ne trouve aucune option pour atteindre ceci sur le ComboBox ou sur le ListStore contenant les données de la même manière que TreeView a les méthodes set_enable_search et set_search_column.

Répondre

2

décidé d'écrire ma propre fonction d'achèvement:

def func(menu, user_data, (widget, window)): 
     return (widget.get_allocation().x + window.get_position()[0],widget.get_allocation().y + window.get_position()[1],True) 

def completion(self, widget, event): 
     alphanum = re.compile(r'[a-zA-Z0-9-]') 
     keyval = event.keyval 
     key = event.string 
     if keyval == 65288: 
      #DEL 
      self.text = self.text[:-1] 
     elif alphanum.match(key): 
      self.text = self.text+key 
     else: 
      self.yTree.get_widget("comp_menu").popdown() 
      self.text = '' 
      return 
     self.yTree.get_widget("comp_menu").popup(None, None, self.func, 1, event.time, (widget, self.wTree.get_widget('main_window'))) 

     widget.grab_focus() 
     m = widget.get_model() 
     j = 0 
     for i in m: 
      if i[0].lower().startswith(self.text): 
       widget.set_active(j) 
       return 
      j+=1 
Questions connexes