Partage
  • Partager sur Facebook
  • Partager sur Twitter

Delete textbox message erreur

get() takes 1 positional argument but 3 were given

Sujet résolu
    23 décembre 2019 à 10:56:03

    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.

    Là cela marche :

    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)
    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 des auteurs et cela ne marche pas pour les lignes 19 et 20 de def save_auteur :

        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
    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)
    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) 

    Merci beaucoup par avance pour vos conseils...




    -
    Edité par lagratteCchouette 23 décembre 2019 à 10:59:47

    • Partager sur Facebook
    • Partager sur Twitter
      22 janvier 2020 à 19:27:07

      Bon j'ai fini par trouvé.

      # Delete textbox after records
      entry_auteur.delete('1.0', END)
      entry_info.delete('1.0', END)

      Mais pas de coup de main !!

      • Partager sur Facebook
      • Partager sur Twitter

      Delete textbox message erreur

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown