_tkinter.TclError: invalid command name ".!frame.!entry"

Viewed 836

I have a problem with a tkinter Entry. When I want to retrieve or delete the content of my entry, the prgrame shows me the error :

_tkinter.TclError: invalid command name ".!frame2.!entry2"

or

_tkinter.TclError: invalid command name ".!frame.!entry"

Here is my program :

def boutton():
    global nbr, m_a_t

    if nbr == 0 : 
        w_t_f = ask_word_p2() # w_t_f == word to find / != what the fuck xD
        if w_t_f == None  :
            print(None)
            nbr -= 1  
        else :
            m_a_t = w_t_f

            info.delete(0,END)
            entre.delete(0,END)
            trais_start(m_a_t)
        

    elif nbr == 1 :
        lttr_test = try_lettre()
        trais(m_a_t)


box_right = Frame(window,bg=bg)

titre_c = Entry(box_right, font=("Helvetica Neu",25), bg=bg, fg=fg, bd=0,             
highlightthickness=0)
titre_c.grid(row=1, column=0, pady=10)
       
entre = Entry(box_right, font=("Helvetica Neu",25), bg=bg, fg=fg, bd=1, highlightthickness=1)
entre.grid(row=2, column=0, pady=10)

b1 = Button(box_right, text="Entrer", font=("Helvetica Neu",30), bg=fg, fg=bg, 
command=boutton)
b1.grid(row=3, column=0, pady=10, sticky="we")

info = Entry(box_right, font=("Helvetica Neu",25), bg=bg, fg=fg, bd=0, highlightthickness=0)
info.grid(row=4, column=0, pady=10)


box_right.grid(row=0, column=1, pady=40)#, padx=50)


def insert_titre_c(txt):
    global titre_c
    titre_c.delete(0,END)
    titre_c.insert(0, txt)

def insert_entre(txt):
    global entre
    entre.delete(0,END)
    entre.insert(0, txt)
        
def insert_info(txt):
    global info
    info.delete(0,END)
    info.insert(0, txt)



def ask_word_p2():
    global entre, l_min, info

    insert_titre_c("Mot à faire deviner au j2 :")

    ...
 
    if error == "other_cara" :
        insert_info("Veuliez entrer uniquement des lettres.")         #here it works     
        return None

    if len(mot) == 0 :
        insert_info("Entrer au moins une lettre.")                    #here it also works
        return None
    
    elif error == "" :
        return mot

        

def trais_start(mot):
    global m_a_t, l_cara

    trai = ""

    t = 0
    for x in m_a_t :
        t += 1
        if t == len(m_a_t) : # pr pas metre d'espace à la fin 
            tr = "_"
            trai = trai + tr
        
        else :
            tr = "_" + " "
            trai = trai + tr
    
        l_cara.append(tr)

    tt = "Mot à trouver : " + trai
    insert_titre_c(tt)



def trais(lt):
    global m_a_t, l_cara
    tt =  "Mot à trouver : " + lt
    insert_titre_c(tt)





def try_lettre():
    global m_a_t, l_min, l_try, vie, l_cara, entre

    insert_titre_c("Entrez une lettre : ")            #error 1
    lettre = entre.get()                              #error 2


    if len(lettre) < 1 :
        insert_info("Veuillez entrez une lettre.")
    elif len(lettre) > 1 :
        insert_info("N'entrez q'une lettre.")

    ...
        
    return mot

I've looked everywhere but so far I haven't found any answers that work for me. Can someone help me ?

0 Answers
Related