Bonjour à tous,
Je suis en python 3 et je rencontre un problème qui m'échappe, car cela marche pour une fonction et pas pour la suivante.
je veux après saisie dans un ENTRY après enregistrement dans ma base de donnée SQLITE3 effacer le texte saisie pour remettre à zéro l'ENTRY pour une autre saisie.
Merci beaucoup par avance pour votre aide.


Là cela marche pour les thèmes à la ligne 23:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
def save_theme(theme_theme):
 
    """ Insertion des données dans database tb_auteur """
    try:    
            connection = sqlite3.connect('mnesis.db') # Connection à la BdD
            cursor = connection.cursor() # création du curseur
            new_theme = (cursor.lastrowid, theme_theme) # Récupération des valeurs des boutons
            # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur
 
            cursor.execute('INSERT INTO tb_theme VALUES(?,?)',new_theme)  
 
    except Exception as e:
 
            print("ERREUR",e)
            connection.rollback()
    finally:
            cursor.close()
            connection.commit() # Valider l'enregistrement dans la database
            connection.close() ## Fermeture de la connection
 
            # Delete textbox after records
            entry_theme.delete(0,END)
Voici le formulaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 
def write_theme():
    """ Saisie des thèmes """
    #Déclaration global afin de pouvoir les exploiter en dehors de la fonction
    global entry_theme
 
    tpl_theme = Toplevel()  #== Contructeur Toplevel ==
    tpl_theme.title(" Bienvenue dans la saisie des thèmes")
    screen_x = int(tpl_theme.winfo_screenwidth())
    screen_y = int(tpl_theme.winfo_screenheight())
    tpl_theme_x = 400
    tpl_theme_y =150
    pos_x = (screen_x // 2) - (tpl_theme_x // 2)
    pos_y = (screen_y // 2) - (tpl_theme_y // 2)
    geo = "{}x{}+{}+{}".format(tpl_theme_x, tpl_theme_y, pos_x, pos_y)
    tpl_theme.geometry(geo)
    tpl_theme.resizable(width=False,height=False) # Fenêtre modifiable True or False
    tpl_theme.configure(bg='Gray79')
    # Champs de saisie ---
    theme_label = Label(tpl_theme, text="Thème",bg='Gray79', font=("Arial", 12,"bold"))
    theme_label.place(x=30,y=18)
    entry_theme = Entry (tpl_theme, width="30",font=("Century Gothic", 14,"bold"))
    entry_theme.place(x=30,y=45)
    #----
    record_btn = Button(tpl_theme, text='Enregistrer', activebackground="SkyBlue1", 
                               command=lambda : save_theme(entry_theme.get()))  
    record_btn.pack(side=BOTTOM, anchor=SE, padx=20, pady=20)

Et par contre là j'ai ce message d'erreur pour le fonction def save_auteur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
    command=lambda : save_auteur(entry_auteur.get(0,END), entry_info.get('1.0', END)))
TypeError: get() takes 1 positional argument but 3 were given
Là j'ai un problème avec les lignes 20 et 21 de la fonction def save_auteur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
def save_auteur(auteur_auteur, auteur_info):
    """ Insertion des données dans database tb_auteur """   
    try:    
            connection = sqlite3.connect('mnesis.db') # Connection à la BdD
            cursor = connection.cursor() # création du curseur
            new_auteur = (cursor.lastrowid, auteur_auteur, auteur_info) # Récupération des valeurs des boutons
            # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur
            cursor.execute('INSERT INTO tb_auteur VALUES(?,?,?)',new_auteur)  
 
    except Exception as e:
            print("ERREUR",e)
            connection.rollback()
    finally:
            cursor.close()
            connection.commit() # Valider l'enregistrement dans la database
            connection.close() ## Fermeture de la connection
 
            # Delete textbox after records
            entry_auteur.delete(0,END)
            entry_info.delete(0, END)
le formulaire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
 
def write_auteur():
    """ Saisie des auteurs """
    # Déclaration global afin de pouvoir les exploiter en dehors de la fonction
    global entry_auteur
    global entry_info
 
    tpl_auteur = Toplevel()  #== Contructeur Toplevel ==
    tpl_auteur.title(" Bienvenue dans la saisie des auteurs")
    screen_x = int(tpl_auteur.winfo_screenwidth())
    screen_y = int(tpl_auteur.winfo_screenheight())
    tpl_auteur_x = 1024
    tpl_auteur_y = 600
    pos_x = (screen_x // 2) - (tpl_auteur_x // 2)
    pos_y = (screen_y // 2) - (tpl_auteur_y // 2)
    geo = "{}x{}+{}+{}".format(tpl_auteur_x, tpl_auteur_y, pos_x, pos_y)
    tpl_auteur.geometry(geo)
    tpl_auteur.resizable(width=False,height=False) # Fenêtre modifiable True or False
    tpl_auteur.configure(bg='Gray79')
    auteur_label = Label(tpl_auteur, text="Auteur",bg='Gray79', font=("Arial", 12,"bold"))
    auteur_label.place(x=30,y=38)
    entry_auteur = Entry (tpl_auteur, width="50",font=("Century Gothic", 14,"bold"))
    entry_auteur.place(x=30,y=65)
    info_label = Label(tpl_auteur, text="Information",bg='Gray79', font=("Arial", 12,"bold"))
    info_label.place(x=30,y=100)
    entry_info = Text(tpl_auteur, width="106", height="18",font=("Century Gothic", 12))
    entry_info.place(x=30,y=127)
    #----
    record_btn = Button(tpl_auteur, text='Enregistrer', activebackground="SkyBlue1", 
                               command=lambda : save_auteur(entry_auteur.get(0,END), entry_info.get(0, END)))  
    record_btn.pack(side=BOTTOM, anchor=SE, padx=20, pady=20)