Это приложение, которое задает математическую задачу, и пользователь вводит ответ в текстовом поле в виде целых чисел, а кнопка submitbtn
проверяет, правильно это или нет. Я привязал клавишу клавиатуры f
к функции, которая запускается при нажатии кнопки submitbtn
, которая работает нормально, но клавиша f
добавляется в текстовое поле после ответа пользователя до его отправки и выдает его как неправильный ответ.
Текстовое окно
text_Input = StringVar
txtbox = Entry(font=('arial',20, BOLD), textvariable=text_Input)
txtbox.grid(columnspan = 2, row = 3, pady = 20)
txtbox.focus_set()
Кнопка отправки
submitbtn = Button(text="Submit", padx=10, pady=10, command=lambda:submit(txtbox.get(), y))
Отправить функцию
def submit(z, y):
global correct_answer, wrong_answer, submitbtn
y=str(y)
if z==y:
correct_answer+=1
lbl2.configure(text=correct_answer)
else:
wrong_answer+=1
lbl4.configure(text=wrong_answer)
submitbtn.config(state="disabled")
Связывание
game.bind('f', lambda event: submit(txtbox.get(), y))
#"game" is the name of Tk()
#submit is the function linked to submitbtn
#This works well if I bind it to <Return> (Enter Key)
Фактический результат:
5+8
Пользователь вводит: 13
Нажимает «f», чтобы отправить ответ
Ответ обработан: 13f
Есть ли способ обрабатывать ввод текстового поля в режиме реального времени, чтобы убедиться, что каждый введенный символ является целым числом? Если пользователь вводит что-либо, кроме 0-9, я хочу, чтобы он ничего не отмечал в текстовом поле.
Кроме того, я отключаю
submitbtn
после однократного нажатия, но многократное нажатие f продолжает увеличивать переменнуюcorrect_answer
. Есть ли способ связать ключ сsubmitbtn
, который, в свою очередь, вызовет функциюsubmit
, вместо того, чтобы напрямую связывать ключf
с функциейsubmit
?
Entry
виджет илиText
виджет? - person Henry Yik   schedule 13.04.2019