GTK / PyGTK делают ComboBox доступным для поиска с клавиатуры - PullRequest
2 голосов
/ 12 августа 2010

Можно ли сделать ComboBox доступным для поиска ? Если да, то как?

Я хочу иметь возможность, когда ComboBox активен и на клавиатуре набирается буква, выбрать первый элемент, начинающийся с этой буквы, внутри ComboBox и так далее со следующими буквами.

Та же функциональность ComboBox внутри веб-страницы, например.

Я не могу найти какую-либо опцию для достижения этого в ComboBox или в ListStore, содержащем данные таким же образом, как TreeView имеет методы set_enable_search и set_search_column.

Ответы [ 2 ]

3 голосов
/ 14 августа 2010
2 голосов
/ 18 августа 2010

Я наконец решил написать свою собственную функцию завершения:

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
...