я вообще стараюсь писать на тач экраны. там вообще никаких листбоксов нет
надо как то обдумать gui листобкса (прокрутка, кинетика), отрисовывать на канвасе, а там уже можно и поиск отрисовать. если на таче научусь. наверное и для кнопочных буду юзать этот алгоритм
кнопочные это кнопочные, тачи это тачи, там по-разному, ты еще и проверку будешь вынужден делать на это. ------------- добавлено в 09.53: на канвасе есть одно но. Иконки. Слабое место питона.
плеееее перекинул. терь вроде заработало. пойду api гляну ------------- добавлено в 13.01:dimy44 разбираю твой код из скрипта, что давал выше, поиск в листбоксе через txtfield
там у тебя есть класс
class P: pass ps = P() ... # а потом где то в коде такое ps.flag_edit = 1
это для того чтобы избавиться от global? я правильно понял? если да, то приму себе на заметку. очень удобно
а вообще хорошо ли создавать класс для переменных? если переменных много то удобно вроде хранить и обращаться к ним, нет? ------------- добавлено в 13.21:dimy44 модуль под второй питон работает, только я пока в нем разобраться не могу. ------------- добавлено в 13.29:dimy44 не мог бы прокоментировать свой код. никак не пойму особенно if-ы
def edit(callback): b = aw.app.body if not ('%s' % b).count('Listbox'): window_search_hide() return if not ps.flag_edit: return g = window_search.get() if ps.text != g: if callable(callback): window_search.visible(bool(g)) callback(g) ps.text = g e32.ao_sleep(0.1, lambda: edit(callback))
------------- добавлено в 13.47: на сенсорах модуль тоже работает. только своеобразно. при нажатии на текстовое поле, появляется стандартное окно ввода
ну да, привязал к инстансу, чтоб глобал не юзать. Хочешь, привяжи например к е32, только это читаемость снижает. Там govnokod, я спешил тогда и пива выпил. edit следит чтоб body был листбокс и вызывает переданную ему функцию при изменении текстового поля в txtfield, передавая в аргументе текст. Дежурная функция. Типа цикла, но не блокирует как while.
Внимание! У вас нет прав для просмотра скрытого текста.
------------- добавлено в 13.59: такс все равно не понял. что есть инстанс? что значит привязать к е32
if not ('%s' % b).count('Listbox'):
вот это не могу понять. прокоментируй пожалуйста дословно, что тут написано
а edit вызывается постоянно? или как она вызывается? я вижу что она вызывается в функции window_search_show(), а она в свою очередь в body_lb() но edit же вызывается один раз? или как
глянь на строку e32.ao_sleep(0.1, lambda: edit(callback)). Работает постоянно пока условия выше выполняются. Асинхронно, это не рекурсия. if not ('%s' % b).count('Listbox'):, на а че ме понятного, набери при теле листбокс print appuifw.app.body. Там будет слово Listbox, я и проверяю его наличие. Может как изящней можно, я не заморачивался) ------------- добавлено в 13.15: инстанс (экземпляр) класса. К е32 привязать- e32.hz = None, и юзай наздоровье, лишь бы родные имена из е32 не переиначивать