IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Delete textbox entry message erreur [Python 3.X]


Sujet :

Python

  1. #1
    Membre confirmé Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Par défaut Delete textbox entry message erreur
    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)

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 709
    Par défaut
    Salut,

    Citation Envoyé par lagratteCchouette Voir le message
    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.
    Quand vous avez une erreur du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: get() takes 1 positional argument but 3 were given
    sachant que .get est une méthode, le premier argument sera l'objet (ici Entry), on sait que l'instruction est entry_auteur.get(0,END) et donc que les 0, END sont en trop.
    Erreur qu'on peut éviter en relisant la documentation d'Entry.get pour constater qu'elle ne prend pas d'argument.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé Avatar de lagratteCchouette
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Par défaut Remerciements
    Merci beaucoup.

    Voici donc mon code opérationnel :

    Ma fonction :

    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
    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('1.0',END)
    Mon 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
     
    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(), entry_info.get('1.0',END)))  
        record_btn.pack(side=BOTTOM, anchor=SE, padx=20, pady=20)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Message erreur dans textbox
    Par Yanmeunier dans le forum IHM
    Réponses: 7
    Dernier message: 29/06/2006, 14h02
  2. Message erreur InterBase
    Par tchaman dans le forum InterBase
    Réponses: 9
    Dernier message: 01/04/2005, 15h50
  3. [g++] message erreur etrange
    Par infotron dans le forum Autres éditeurs
    Réponses: 15
    Dernier message: 19/09/2004, 23h14
  4. [FLASH MX 2004] message erreur de classe
    Par matN59 dans le forum Flash
    Réponses: 3
    Dernier message: 14/06/2004, 08h59
  5. [Kylix] message erreur à l'ex
    Par JlouisI dans le forum EDI
    Réponses: 5
    Dernier message: 08/03/2003, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo