Как можно реализовать конечный автомат для строки полученной из entry?
Вообщем-то, пусть у нас будет виджет entry, в него я ввожу строку, она должна иметь такой вид: [a-z,A-z,А-я, а-я, 0-9], причём первый символ только любая буква=Radiobutton(varibale=[a-z,A-z,А-я, а-я, 0-9],value=[a-z,A-z,А-я, а-я, 0-9]). Ниже схема, которую я сделал для автомата. Пытался делать валидацией, но плохо понимаю как она работает. Попытка решения.
#"" = Radiobutton(variable = "", value = "")
from tkinter import *
import re
root = Tk()
root.title('main')
root.geometry('200x200')
stage = 1
def start(new_val):
global stage, e1, l1
l1["text"] = f"stage - {stage}"
if stage == 1:
result = re.match("[a-zа-я]", new_val)
if result is not None:
stage += 1
return result is not None
elif stage == 2:
result = re.match("[A-zА-я0-9_=]{2,}", new_val)
if new_val[-1] == "=":
stage+=1
return result is not None and result.group() == new_val
elif stage in [3,4,5,6,7,8,9,10,11,12,13,14,15]:
pattern = r"\=Radiobutton("
result = re.match(pattern[:stage], new_val[-(stage - 1):])
if result is not None:
stage += 1
return result is not None
check = (root.register(start), "%P")
e1 = Entry(validate="key", validatecommand=check)
e1.place(x=50,y=50)
l1 = Label(text = f'stage - {stage}')
l1.place(x=50,y=100)
root.mainloop()
