Как я могу создать ряд односимвольных текстовых полей и автоматически перемещать курсор по мере ввода пользователем?Python

Программы на Python
Ответить
Anonymous
 Как я могу создать ряд односимвольных текстовых полей и автоматически перемещать курсор по мере ввода пользователем?

Сообщение Anonymous »

Я делаю приложение для мобильного ремонта автомобилей для личного использования. В разделе информации о клиенте у меня есть панель для ввода информации об автомобиле. В эту информацию о транспортном средстве я хочу включить семнадцатизначный VIN автомобиля.
На дисплее метки (другая область приложения) я хочу, чтобы семнадцатизначный VIN был анализируется, поэтому я могу быстро идентифицировать восьмой символ и последние восемь символов. Восьмое — код двигателя. Последние восемь используют дилерские центры при поиске запчастей.
Мне кажется, было бы проще объединить семнадцать отдельных символов и добавить пробелы там, где я хочу, чем это было бы взять семнадцатизначную строку и проанализировать ее.
Итак я решил, что семнадцать отдельных полей ввода — правильный путь. Но утомительно нажимать табуляцию после каждого символа, чтобы перейти к следующему полю. Следовательно, я бы хотел, чтобы как только я ввожу символ в первое поле, он автоматически переходил во второе. Как только я ввожу символ во втором, он автоматически переходит к третьему. И так далее. Таким образом, я могу просто ввести VIN.
У меня нет проблем с изготовлением коробок или с тем, чтобы они работали. Но я еще недостаточно хорошо знаю Python, чтобы понять, какую функцию событий мне нужно создать, чтобы получить желаемый эффект.
Я новичок. Насколько это возможно, дайте мне предварительную алгебру, а не исчисление, если вы уловили мою мысль.
Я пробовал работать с этим:

Код: Выделить всё

def advnum1(event):
entry = event.widget
if len(entry.get()) == entry.get_max_length():
next_widget = entry.tkinter_focusNext()
if next_widget:
next_widget.focus()

fnumbox1 = tkinter.Entry(master=cstinfofrmfg, justify="center", bg="#b2b4b7", fg="#000000", width=4)
fnumbox1.place(x=112, y=181.5)
fnumbox1.bind("", advnum1)
fnumbox2 = tkinter.Entry(master=cstinfofrmfg, justify="center", bg="#b2b4b7", fg="#000000", width=4)
fnumbox2.place(x=144, y=181.5)
fnumbox3 = tkinter.Entry(master=cstinfofrmfg, justify="center", bg="#b2b4b7", fg="#000000", width=5)
fnumbox3.place(x=176, y=181.5)
Но как бы я ни старался изменить разные части выражения, все выдает ошибку. Похоже, что функции get не нравится такое расположение. Другие вещи говорят, что атрибута нет. Я попытался ввести имя переменной элемента управления Entry. Я пробовал разные вещи. Кажется, ничего не работает. Я предполагаю, что это всего лишь своего рода набросок сценария. Но я не уверен, что на самом деле должно быть так, как есть, а что следует заменить конкретными переменными или именами виджетов.

Подробнее здесь: https://stackoverflow.com/questions/791 ... sor-automa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»