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 :

R�cup�ration d'une variable en frontend pour confirmer un enregistrement dans sqlite [Python 3.X]


Sujet :

Python

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut R�cup�ration d'une variable en frontend pour confirmer un enregistrement dans sqlite
    Bonjour � tous,

    Sujet:
    J'ai 2 fichiers un frontend.py pour tkinter et l'autre main.py.
    Je souhaite confirmer l�enregistrement de ma saisie dans ma database sqlite3.
    j'ai beau cr�er la variable result et la reprendre dans mon lablelResult, mais j'ai toujours ce message.

    Fichier "C:\DevPython_Santiago\menesis_database_work-02\frontend.py", ligne 70, dans <module>
    labelResult = Label(fenetre, textvariable=result, font=("Arial", 12))

    builtins.NameError: name 'result' is not defined
    Je vous mets mon code ci-dessous

    frontend.py
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    from main import * # syntaxe pour appeller un autre fichier py + fonction
    from tkinter import font
     
     
    #================== Création du constructeur graphique =================================
    fenetre =Tk() # Création d'un constructeur
    #champ_label = Label(fenetre, text="Menu") # Création d'un label
    #champ_label.pack() # création de l'impression du label
     
    #======== Dimensionnement de la fenetre =================================================
    # Fonction centrer fenêtre
    screen_x = int(fenetre.winfo_screenwidth())
    screen_y = int(fenetre.winfo_screenheight())
     
    #fenetre_x = 1600
    #fenetre_y = 900
     
    fenetre_x = 800
    fenetre_y = 600
     
    pos_x = (screen_x // 2) - (fenetre_x // 2)
    pos_y = (screen_y // 2) - (fenetre_y // 2)
     
    # Attention le 1er facteur est x ensuite +
    geo = "{}x{}+{}+{}".format(fenetre_x, fenetre_y, pos_x, pos_y)
    fenetre.geometry(geo)
     
    #============= FENETRE FIN ==============================================================
    fenetre.iconbitmap("img/search.ico") ### Changement de l'icone de la fenêtre [l'icone doit être placé dans le répertoire racine de l'application ou un autre répertoire img/...]
     
    #=================== Création d'un menu =================================================
    menubar = Menu(fenetre) # Création de la FRAME pour placer les menus
     
    menuFichier = Menu(menubar, tearoff=0) # Création du menu "Fichier"
    menubar.add_cascade(label="Fichier", menu=menuFichier) # Rattachement des commandes au menu "Fichier"
    menuFichier.add_command(label="Créer")
    menuFichier.add_command(label="Ouvrir",)
    menuFichier.add_command(label="Editer")
    menuFichier.add_separator() # Ligne de séparation
    menuFichier.add_command(label="Quitter", command=fenetre.quit)
     
    menuEdition = Menu(menubar, tearoff=0)
    menubar.add_cascade(label="Edition", menu=menuEdition)
    menuEdition.add_command(label="Couper")
    menuEdition.add_command(label="Copier")
    menuEdition.add_command(label="Coller")
     
    menuAide = Menu(menubar, tearoff=0)
    menubar.add_cascade(label="Aide", menu=menuAide)
    menuAide.add_command(label="A propos")
     
    #=================== Création d'un GRID ================================================
     
    labelAuteur = Label(fenetre, text="auteur", font=("Arial", 12), width="30", height="5")
    labelAuteur.grid(row = 1, column=1, padx = 20)
    entreeAuteur = Entry (fenetre,  width="30")
    entreeAuteur.grid(row = 1, column = 2,) 
     
    labelInfos = Label(fenetre, text="infos", font=("Arial", 12))
    labelInfos.grid(row = 2, column=1, padx = 20)
    entreeInfos = Entry (fenetre)
    entreeInfos.grid(row = 2, column = 2) 
     
    boutonEnregistrer = Button (fenetre, text='Valider', command=lambda : enregister(entreeAuteur.get(), entreeInfos.get()))
    boutonEnregistrer.grid (row = 1, column = 8, padx = 30)
     
    labelResult = Label(fenetre, textvariable=result, font=("Arial", 12))
    labelResult.grid(row = 3, column=1, padx = 20)
     
    #================== FERMETURE DES BOUCLES ==============================================
    fenetre.config(menu=menubar) # Configuration et print menu
    fenetre.mainloop() # Boucle principale
    main.py
    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
     
    # -*- coding: utf-8 -*-
    import sqlite3
     
    #=================== Insertion des données dans database ================================================
    def enregister(auteur, infos,result):
     
            try:                
                    result = StringVar()
                    result.set=("Enregistrement effectué")
                    connection = sqlite3.connect('mnesis.db') # Connection à la BdD
                    cursor = connection.cursor() # création du curseur
                    new_auteur = (cursor.lastrowid, auteur, infos) # Récupération des valeurs des boutons
                    cursor.execute('INSERT INTO tb_auteur VALUES(?,?,?)',new_auteur) # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur 
                    print(result)
     
            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

  2. #2
    Expert confirm�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par d�faut
    Salut,

    Le nom result n'existe pas au d�marrage de l'application. Il est cr�� dans la fonction du second fichier et en plus il n'est pas retourn� par celle-ci.

    Tu dois mettre textvariable="" � la cr�ation du label et la commande du bouton doit appeler une fonction qui appellera � son tour la fonction enregistrer et ensuite mettra � jour le label avec le retour de cette fonction.

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut R�cup�ration d'une variable en frontend pour confirmer un enregistrement dans sqlite
    Merci beaucoup VinsS

    Mais je passe � python depuis peu, je ne suis pas s�r de tout comprendre.
    Mes autres variables sont bien reprises dans le bouton "Valider"... pourquoi en Python c'est aussi complexe ?
    A moins que je n'ai pas compris la logique !!

    Pouvez-vous m'en dire plus s'il vous pla�t, merci beaucoup par avance.

  4. #4
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    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 774
    Par d�faut
    Salut,

    Citation Envoy� par lagratteCchouette Voir le message
    A moins que je n'ai pas compris la logique !!

    Pouvez-vous m'en dire plus s'il vous pla�t, merci beaucoup par avance.
    On vous a d�j� r�pondu dans cette discussion. Apr�s soit vous prenez le temps d'ouvrir un tuto. pour apprendre ce que sont les modules Python soit vous persistez � penser en PHP.

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

  5. #5
    Membre confirm� Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut Suite
    Bien merci.

    Je comprends, mais je voulais un petit coup de main car je d�bute, car j'ai lu mais je ne saisi pas tout et j'ai tout essay� avant de poster.
    Voil� c'�tait simple ma demande et en plus bienveillante

  6. #6
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    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 774
    Par d�faut
    Salut,

    Citation Envoy� par lagratteCchouette Voir le message
    Je comprends, mais je voulais un petit coup de main car je d�bute, car j'ai lu mais je ne saisi pas tout et j'ai tout essay� avant de poster.
    Ben oui: transformer l'information que vous lisez dans un tuto en connaissances dont vous allez pouvoir tirer profit demande un temps d'apprentissage plus ou moins long suivant les personnes.

    Citation Envoy� par lagratteCchouette Voir le message
    Voil� c'�tait simple ma demande et en plus bienveillante
    Votre soucis est que vous d�coupez votre programme en module en pensant PHP: "import" n'est pas "include"... et tant que vous n'aurez pas compris ce que racontent les tutos sur les modules et lesespaces de noms, il vous sera difficile de structurer votre code en modules.
    Ce qui n'est pas bloquant puisque Python ne vous y oblige pas (et qu'en mettant tout dans le m�me script, �� tomberait en marche)... mais �� demande un vrai effort de compr�hension qu'on ne peut faire � votre place (et rab�cher ici ce que vous avez d�j� dans les tutos. ne servirait � rien tant que vous n'avez pas essay� de comprendre par vous m�me).

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

  7. #7
    Membre confirm� Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut Remerciements
    Merci pour votre r�ponse.
    Je vais continuer d'essayer

  8. #8
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    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 774
    Par d�faut
    Citation Envoy� par lagratteCchouette Voir le message
    Merci pour votre r�ponse.
    Je vais continuer d'essayer
    Posez le crayon et essayez de comprendre sur des exemples pr�cis.
    un module f.py:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    a = 10
    def show_f():
         print(a)
    un autre module g.py: contenant:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    from f import *
    print(a)
    a = 'xxx'
    show_f()
    print(a)
    devrait vous permettre de constater que le a de g et le a de f ne sont pas les m�mes.
    Et c'est � partir de ce genre d'exemples que vous allez pouvoir comprendre les implications de modules et espaces de noms sur votre code (et le sens des mots/concepts des tutos).

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

  9. #9
    Membre confirm� Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut Re...Remerciements
    Merci �norm�ment...
    Je commence � voir... il n'y a plus qu'a...

  10. #10
    Membre confirm� Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut builtins.NameError: name 'auteur' is not defined
    Bonjour,

    Je sais vous allez tous me dire que je dois lire... ce que j'ai fais mais j'ai vraiment besoin d'un coup de main.
    Je deviens fou.

    Voici mon programme que je d�veloppe du coup dans un seul fichier tant que je ne suis pas devenu copain avec les modules...

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    from tkinter import *
    from tkinter import font
    import sqlite3
     
    #=================== Insertion des données dans database ================================================
    def enregister(auteur, infos):
        try:    
            connection = sqlite3.connect('mnesis.db') # Connection à la BdD
            cursor = connection.cursor() # création du curseur
            new_auteur = (cursor.lastrowid, entreeAuteur.get(),entreeInfos.get()) # Récupération des valeurs des boutons
            cursor.execute('INSERT INTO tb_auteur VALUES(?,?,?)',new_auteur) # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur 
            print("Enregistrement effectué")
        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
     
     
    #================== Création du constructeur graphique =================================
    fenetre =Tk() # Création d'un constructeur
    #champ_label = Label(fenetre, text="Menu") # Création d'un label
    #champ_label.pack() # création de l'impression du label
     
    #======== Dimensionnement de la fenetre =================================================
    # Fonction centrer fenêtre
    screen_x = int(fenetre.winfo_screenwidth())
    screen_y = int(fenetre.winfo_screenheight())
    fenetre_x = 800
    fenetre_y = 600
     
    pos_x = (screen_x // 2) - (fenetre_x // 2)
    pos_y = (screen_y // 2) - (fenetre_y // 2)
     
    # Attention le 1er facteur est x ensuite +
    geo = "{}x{}+{}+{}".format(fenetre_x, fenetre_y, pos_x, pos_y)
    fenetre.geometry(geo)
     
    #============= FENETRE FIN ==============================================================
    fenetre.iconbitmap("img/search.ico") ### Changement de l'icone de la fenêtre [l'icone doit être placé dans le répertoire racine de l'application ou un autre répertoire img/...]
     
    #=================== Création d'un menu =================================================
    menubar = Menu(fenetre) # Création de la FRAME pour placer les menus
     
    menuFichier = Menu(menubar, tearoff=0) # Création du menu "Fichier"
    menubar.add_cascade(label="Fichier", menu=menuFichier) # Rattachement des commandes au menu "Fichier"
    menuFichier.add_command(label="Créer")
    menuFichier.add_command(label="Ouvrir",)
    menuFichier.add_command(label="Editer")
    menuFichier.add_separator() # Ligne de séparation
    menuFichier.add_command(label="Quitter", command=fenetre.quit)
     
    menuEdition = Menu(menubar, tearoff=0)
    menubar.add_cascade(label="Edition", menu=menuEdition)
    menuEdition.add_command(label="Couper")
    menuEdition.add_command(label="Copier")
    menuEdition.add_command(label="Coller")
     
    menuAide = Menu(menubar, tearoff=0)
    menubar.add_cascade(label="Aide", menu=menuAide)
    menuAide.add_command(label="A propos")
     
    #=================== Création d'un GRID ================================================
     
    labelAuteur = Label(fenetre, text="Auteur", font=("Arial", 12), width="30", height="5")
    labelAuteur.grid(row = 1, column=1, padx = 5)
    entreeAuteur = Entry (fenetre,fg="#ff5733", width="30")
    entreeAuteur.grid(row = 1, column = 2,) 
     
    labelInfos = Label(fenetre, text="Infos", font=("Arial", 12))
    labelInfos.grid(row = 2, column=1, padx = 5)
    entreeInfos = Entry (fenetre)
    entreeInfos.grid(row = 2, column = 2) 
     
    #labelMessage = Label(fenetre, text=print)
    #labelMessage.grid(row=3, column=6)
     
    boutonEnregistrer = Button(fenetre, text=' Valider ', command=enregister(auteur, infos))
    boutonEnregistrer.grid (row = 1, column = 8, padx = 30)
     
    #================== FERMETURE DES BOUCLES ==============================================
    fenetre.config(menu=menubar) # Configuration et print menu
    fenetre.mainloop() # Boucle principale
    Au niveau du bouton enregistrer... quand est le code est celui-ci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    boutonEnregistrer = Button(fenetre, text=' Valider ', command=enregister)
    boutonEnregistrer.grid (row = 1, column = 8, padx = 30)
    Python me dit :

    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Users\xxxxxx\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
    TypeError: enregister() missing 2 required positional arguments: 'auteur' and 'infos'
    et quand je l'�cris comme cela :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    boutonEnregistrer = Button(fenetre, text=' Valider ', command=enregister(auteur, infos))
    boutonEnregistrer.grid (row = 1, column = 8, padx = 30)
    Python me dit :

    Fichier "C:\xxxxxxx\menesis\frontend_db.py", ligne 81, dans <module>
    boutonEnregistrer = Button(fenetre, text=' Valider ', command=enregister(auteur, infos))

    builtins.NameError: name 'auteur' is not defined
    J'en perds mon latin et je n'arrive pas � comprendre.
    CAR POURTANT IL ME SEMBLE AVOIR BIEN COMPRIS, car dans le code ci-dessous tout marche...

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    import sqlite3
    from tkinter import font
     
     
    def enregister (): # Création de la fonction "Enregister"
        connection = sqlite3.connect('mnesis.db') # Connection à la BdD
        cursor = connection.cursor() # création du curseur
        new_auteur = (cursor.lastrowid, entreeAuteur.get(),entreeInfos.get()) # Récupération des valeurs des boutons
        cursor.execute('INSERT INTO tb_auteur VALUES(?,?,?)',new_auteur) # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur 
        print("Enregistrement effectué")
        cursor.close()
        connection.commit() # Valider l'enregistrement dans la database
        connection.close() ## Fermeture de la connection
     
     
    #================== Création du constructeur graphique =================================
    fenetre =Tk() # Création d'un constructeur
     
    #======== Dimensionnement de la fenetre =================================================
    # Fonction centrer fenêtre
    screen_x = int(fenetre.winfo_screenwidth())
    screen_y = int(fenetre.winfo_screenheight())
    fenetre_x = 800
    fenetre_y = 600
     
    pos_x = (screen_x // 2) - (fenetre_x // 2)
    pos_y = (screen_y // 2) - (fenetre_y // 2)
     
    # Attention le 1er facteur est x ensuite +
    geo = "{}x{}+{}+{}".format(fenetre_x, fenetre_y, pos_x, pos_y)
    fenetre.geometry(geo)
     
    #============= FENETRE FIN ==============================================================
    #fenetre.iconbitmap("img/search.ico") ### Changement de l'icone de la fenêtre [l'icone doit être placé dans le répertoire racine de l'application ou un autre répertoire img/...]
     
    #=================== Création d'un menu =================================================
    menubar = Menu(fenetre) # Création de la FRAME pour placer les menus
     
    menuFichier = Menu(menubar, tearoff=0) # Création du menu "Fichier"
    menubar.add_cascade(label="Fichier", menu=menuFichier) # Rattachement des commandes au menu "Fichier"
    menuFichier.add_command(label="Créer")
    menuFichier.add_command(label="Ouvrir",)
    menuFichier.add_command(label="Editer")
    menuFichier.add_separator() # Ligne de séparation
    menuFichier.add_command(label="Quitter", command=fenetre.quit)
     
    menuEdition = Menu(menubar, tearoff=0)
    menubar.add_cascade(label="Edition", menu=menuEdition)
    menuEdition.add_command(label="Couper")
    menuEdition.add_command(label="Copier")
    menuEdition.add_command(label="Coller")
     
    menuAide = Menu(menubar, tearoff=0)
    menubar.add_cascade(label="Aide", menu=menuAide)
    menuAide.add_command(label="A propos")
     
    #=================== Création d'un GRID ================================================
     
    labelAuteur = Label(fenetre, text="Auteur", fg="#ff5733", bg="#1944f3",font=("Arial", 12), width="30", height="5")
    labelAuteur.grid(row = 1, column=1, padx = 20)
    entreeAuteur = Entry (fenetre,fg="#ff5733", bg="#b14abb",width="30")
    entreeAuteur.grid(row = 1, column = 2,) 
     
    labelInfos = Label(fenetre, text="Infos", font=("Arial", 12))
    labelInfos.grid(row = 2, column=1, padx = 20)
    entreeInfos = Entry (fenetre)
    entreeInfos.grid(row = 2, column = 2) 
     
     
    boutonEnregistrer = Button (fenetre, text=' Valider ', command=enregister)
    boutonEnregistrer.grid (row = 1, column = 8, padx = 30)
     
    #================== FERMETURE DES BOUCLES ==============================================
    fenetre.config(menu=menubar) # Configuration et print menu
    fenetre.mainloop() # Boucle principale

  11. #11
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    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 774
    Par d�faut
    Salut,

    Citation Envoy� par lagratteCchouette Voir le message
    J'en perds mon latin et je n'arrive pas � comprendre.
    CAR POURTANT IL ME SEMBLE AVOIR BIEN COMPRIS, car dans le code ci-dessous tout marche...
    Ici la difficult� est que vous voulez passer des param�tres � votre callback enregistrer alors qu'un callback est � priori une fonction sans param�tre.
    La solution est de passer par une fermeture/closure ou lambda en prenant le temps d'apprendre ce dont il s'agit avec la lecture de cet article de la FAQ.

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

  12. #12
    Expert confirm�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par d�faut
    Salut,

    Tu n'as aucun besoin de ces param�tres pour ta fonction puisqu'� l'int�rieure de celle-ci tu utilises entreeAuteur.get(),entreeInfos.get()

    Comme ces deux Entry sont d�finies dans l'espace global du programme �a devrait fonctionner tel quel.

  13. #13
    Membre confirm� Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut
    Merci � tous les deux...
    Effectivement en utilisant une fonction "lambda" cela marche, mais je ne devrais pas avoir � le faire puisque tout est d�fini dans ma fonction "enregistrer"
    Voici mon code.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    #boutonEnregistrer = Button(fenetre, text=' Valider ', command=enregister)  - code ne marchant pas
    #code fonctionnant...
    boutonEnregistrer = Button (fenetre, text=' Valider ', command=lambda :enregister(entreeAuteur.get(), entreeInfos.get()))
    boutonEnregistrer.grid (row = 1, column = 8, padx = 30)
    J'avoue avoir du mal � saisir la logique de Python, mais c'est peut-�tre pour cela qu'il doit �tre puissant.

  14. #14
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    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 774
    Par d�faut
    Citation Envoy� par lagratteCchouette Voir le message
    Effectivement en utilisant une fonction "lambda" cela marche, mais je ne devrais pas avoir � le faire puisque tout est d�fini dans ma fonction "enregistrer"
    Maintenant vous pouvez r�-�crire enregistrer pour qu'elle r�cup�re ses valeurs � partir des param�tres:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sef enregister(auteur, infos):
        try:    
            connection = sqlite3.connect('mnesis.db') # Connection à la BdD
            cursor = connection.cursor() # création du curseur
            new_auteur = (cursor.lastrowid, auteur, infos) # Récupération des valeurs des boutons
            cursor.execute('INSERT INTO tb_auteur VALUES(?,?,?)',new_auteur) # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur 
            print("Enregistrement effectué")
        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
    et pousser ce code dans son module � part.

    Citation Envoy� par lagratteCchouette Voir le message
    J'avoue avoir du mal � saisir la logique de Python, mais c'est peut-�tre pour cela qu'il doit �tre puissant.
    Quel que soit le langage, il faut du temps pour "penser" dans ce langage.
    Normalement, vous devriez ouvrir un tuto. et avoir la patience d'apprendre.
    Vous voulez faire sans passer par la case "apprendre": beaucoup de choses vous �chappent.

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

  15. #15
    Membre confirm� Avatar de lagratteCchouette
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    202
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 202
    Par d�faut
    Citation Envoy� par wiztricks Voir le message
    Maintenant vous pouvez r�-�crire enregistrer pour qu'elle r�cup�re ses valeurs � partir des param�tres:

    Quel que soit le langage, il faut du temps pour "penser" dans ce langage.
    Normalement, vous devriez ouvrir un tuto. et avoir la patience d'apprendre.
    Vous voulez faire sans passer par la case "apprendre": beaucoup de choses vous �chappent.
    - W
    Merci pour ces retours, mais ouvrir les tutos c'est ce que je fais et pour comprendre... le temps n'est pas � mon avis le seul facteur.
    Des �changes sur des exemples concrets permettent d�appr�hender plus rapidement les rudiments de ces nouveaux paradigmes pour ensuite pouvoir voler de ses propres ailes.
    Au plaisir et je continue � lire... comme vous me l'avez conseill� .

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�cup�ration d'une variable pour une ligne de code
    Par flo2tours dans le forum G�n�ral JavaScript
    R�ponses: 18
    Dernier message: 09/04/2014, 17h08
  2. [Dojo] R�cup�ration d'une variable javascript � partir d'un dojo bouton dans php
    Par antoineadb dans le forum Biblioth�ques & Frameworks
    R�ponses: 2
    Dernier message: 21/11/2012, 12h09
  3. [MySQL] Probl�me avec la r�cup�ration d'une variable dans un lien pour un panier
    Par roy-mustang dans le forum PHP & Base de donn�es
    R�ponses: 0
    Dernier message: 23/06/2011, 13h58
  4. [AC-2003] R�cup�ration d'une variable pour SQL
    Par gentoo dans le forum IHM
    R�ponses: 3
    Dernier message: 11/07/2010, 14h49
  5. [D�butant] r�cup�ration d'une variable local pour l'envoyer a un popup
    Par minogttao dans le forum G�n�ral JavaScript
    R�ponses: 9
    Dernier message: 25/11/2006, 13h58

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