Функций обработчика событий когда активны виджеты указанные на скриншоте. Каждый виджет это буква задания в игре ПолеЧудес
Ее работа заключается в следюущем
1. Если нажимаете клавишу BackSpace а в текущем виджете нет буквы которую можно удалить он удаляет ближашую букву слева
2. Если нажимаете клавишу BackSpace а виджете есть буква он просто удаляет из этого виджета букву
3. Если вы нажимаете на кнопку клиатуры не отсящиеся к русским буквам например Shift или цифры программа игнорирует нажатие
4. Если вы нажимаете на кнопку русской буквы а виджете есть уже буква функция заменяет букву на новую или если ее нет просто вставляет букву. И если в следующем виджете нет буквы перемещает фокус на следующий виджет (букву)
def on_key(event):
widget = event.widget
if event.keysym == "BackSpace":
if not widget.get():
for widget in text_widgets[:text_widgets.index(widget)][::-1]:
if widget["fg"]=="black":
widget.delete(0, tk.END)
задание[text_widgets.index(widget)]=""
widget.focus_set()
break
return
rus_буква = re.match(r'[а-яА-Я]', event.char)
if rus_буква:
widget.delete(0, tk.END)
widget.insert(tk.END, event.char.lower())
next_widget = widget.tk_focusNext()
задание[text_widgets.index(widget)]=widget.get()
if next_widget in text_widgets and next_widget["fg"]=="#E5E5E5":
next_widget.focus_set()
return "break"
elif not rus_буква: return "break"