Как принимать строчные буквы в поиске завершения в функции ввода в выпадающем списке - PullRequest
1 голос
/ 13 июня 2019

Этот код (ниже) с комбобоксентри не совпадает со всеми примерами завершения с двумя последними элементами: (символы S, P или F ...)
(python v2.7.15 + GTK3)

# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# Name:     module1_TEST
# Python :  2.7.15
#-------------------------------------------------------------------------------
def main():

    # -- Import Gtk3 packages
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, Gdk

    ldivers = [
        'http://www.google.com',
        'http://www.google.com/android',
        'http://www.greatstuff.com',
        'http://www.facebook.com',
        'S002.0002',
        '01-311P1015H5_F011650'
        ]
    liststore = Gtk.ListStore(str)
    for s in ldivers:
        liststore.append([s])

    completion = Gtk.EntryCompletion()
    completion.set_model(liststore)
    completion.set_text_column(0)

    entry = Gtk.Entry()
    entry.set_completion(completion)

    def match_anywhere(completeur, entrystr, iter, data):
        modelstr = completeur.get_model()[iter][0]
        return entrystr in modelstr
    completion.set_match_func(match_anywhere, None)

    # boilerplate
    window = Gtk.Window()
    window.add(entry)

    window.connect('destroy', lambda w: Gtk.main_quit())
    window.show_all()
    Gtk.main()

if __name__ == '__main__':
    main()

Я предлагаю решение в ответ, извините за отсутствие опыта, я просто хочу помочь тем, кто выглядит слишком похожим на меня:)

1 Ответ

0 голосов
/ 14 июня 2019

РЕШЕНИЕ: заглавные буквы учитываются при пересечении 'modelstr.lower ()' возврата ...

    def match_anywhere(completeur, entrystr, iter, data):
        modelstr = completeur.get_model()[iter][0]
        return entrystr in modelstr.lower()
    completion.set_match_func(match_anywhere, None)

...