Как подставлять значения при наборе (Python, Tkinter, Combobox)?
Всем привет!
Подскажите, пожалуйста, как мне реализовать автоподстановку значений из выпадающего списка Combobox (виджет Tkinter) при наборе текста?
Думаю, все сталкивались с набором, например, адреса на сайтах - вводишь часть адреса и в выпадающем списке появляются подходящие значения. Чем больше текста набрал, тем меньше значений в выпадающем списке. Я хочу реализовать такое же поведение для поля (комбобокс) в десктопном приложении на Python, Tkinter.
Особой привязки задачи к Combobox нет, я его выбрал только потому, что больше ни у какого виджета не нашёл выпадающего списка и одновременно возможности набирать текст. Если описанное выше можно реализовать каким-то другим элементом из Tkinter - подходит. Важно, чтобы это был именно Tkinter (можно ttk).
Гуглил, стаковерфловил, документацию читал, не нашёл - поэтому спрашиваю здесь.
Спасибо за наводку. Но всё же не совсем то, что надо. Нужно, чтобы работа велась только в одном поле (а там он зачем-то вводит в Entry, а результат получает ниже в Combobox), и главное - чтобы выпадающий список выпадал при наборе именно в поле комбобокса.
Например, как вот здесь: https://dadata.ru/suggestions/#address
Я начинаю набирать, например, "Смол", сразу выпадает список - "Смоленская обл", "Смоленск" "Москва, Смоленская наб" и т.п. Если я ввожу "Смоленская", то уже "Смоленск" не вижу, выпадает только "Смоленская наб" и т.п. При этом список именно выпал, т.е. я могу стрелками на клавиатуре выбрать нужный.
И ещё в идеале, если в списке остался только один элемент, то его вообще бы подставлять в поле. Т.е. если, например, в списке месяцев я ввожу "ию", то выпадает список с Июнь и Июль, но если я ввёл "Се", то хотелось бы, чтобы "Сентябрь" сразу подставился в поле набора.
Есть ли такая возможность в Ткинтере? Или придётся руками нажимать на стрелочку, вызывая список?
prohodil_mimo, во-первых, что тебе мешает брать значение value сразу у combobox, а не у entry, как в примере (ну хотя бы попытайся переделать код под свои нужды, там две строки переписать)
во-вторых, повнимательнее прочитай ВСЮ тему, которую я скинул, а не только код в первом сообщении, там все что тебе нужно
в-третьих, проверяй длину списка значений комбобокса, если она равна 1, то и подставляй сразу слово в поле ввода
Нет, со значением я разобрался, там несложно, всё завёл на одно поле, событие вместо фокуса присоединил кипрес, список фильтруется, всё в порядке. Подстановку значения тоже. Но вот чтобы список сам выпадал, без нажатия на кнопку, такого не вижу ни в теме, ни в документации. Например, в списке месяцев я ввожу "Ию", потом нажимаю мышкой на стрелочку или на клавиатуре Вниз - тогда список выпадает, в нём Июнь и Июль. Можно ли как-то заставить этот список выпадать без дополнительных действий? Чтобы после ввода "Ию" список сам выпал со значениями Июнь, Июль?