Сосредоточение на следующем поле ввода после ввода числа в текущем поле ввода - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь увидеть, есть ли способ ввести число от 1 до 4 в поле ввода, а затем перейти к следующему полю ввода (с введенным номером в поле; код ниже пропускает к следующей записиничего не вводя)

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

Основной код:

from tkinter import *

master = Tk()
root_menu = Menu(master)
master.config(menu = root_menu)

def nextentrybox(event):
    event.widget.tk_focusNext().focus()
    return('break')

Label(master, text='Q1',font=("Arial",8)).grid(row=0,column=0,sticky=E)
Q1=Entry(master, textvariable=StringVar)
Q1.grid(row=0,column=1)
Q1.bind('1',nextentrybox)
Q1.bind('2',nextentrybox)
Q1.bind('3',nextentrybox)
Q1.bind('4',nextentrybox)
Label(master, text='Q2',font=("Arial",8)).grid(row=1,column=0,sticky=E)
Q2=Entry(master, textvariable=StringVar)
Q2.grid(row=1,column=1)
Q2.bind('1',nextentrybox)
Q2.bind('2',nextentrybox)
Q2.bind('3',nextentrybox)
Q2.bind('4',nextentrybox)
### etc for rest of questions

### Scale sums, t-score lookups, and report generator to go here

file_menu = Menu(root_menu)
root_menu.add_cascade(label = "File", menu = file_menu)
file_menu.add_separator()
file_menu.add_command(label = "Quit", command = master.destroy)

mainloop()

Спасибо за любую помощь или указатели!

1 Ответ

0 голосов
/ 05 февраля 2019

Самое простое решение - ввести keyym события, прежде чем переходить к следующему полю.

В следующем примере обратите внимание, как я добавил вызов к event.widget.insert перед перемещением фокуса:

def nextentrybox(event):
    event.widget.insert("end", event.keysym)
    event.widget.tk_focusNext().focus()
    return('break')
...