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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 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
    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 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 741
    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 741
    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
    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 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 741
    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 741
    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

+ 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