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 :

Problème enregistrement de donnée depuis un Entry [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Problème enregistrement de donnée depuis un Entry
    Bonjour,
    Comme noté dans mon intitulé je cherche à récupérer les données que l'on rentre manuellement dans un Entry, je pense qu'il faut utiliser le .get() pour cela. Malheureusement j'ai du mal à comprendre à quel moment je suis sensé l'utiliser. De plus j'utilise .destroy pour fermer le toplevel et je me demande si ce n'est pas cela qui pose problème également. J'ai essayé de récupéré les données de mon entry en reprenant le code de ce topic https://www.developpez.net/forums/d8...perer-d-entry/ mais rien ne change.
    J'ai essayé plusieurs versions pour mon code, mais j'ai toujours des erreurs ce n'est pas les mêmes cependant, mais on m'avait dit que parfois les erreurs ne donnaient pas le réel problème, alors voici mon code :

    Pour moi le plus probable c'est mon .get() que j'utilise très mal, ou la manière dont j'initialise les variables.

    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
    OngletPrincipal = Tk()
    OngletPrincipal.configure(width=500,height=400)  ##Taille de la fenetre
    OngletPrincipal.resizable(width=False,height=False)   ##Empeche le redimensionnement automatique de la fenetre
    OngletPrincipal.title("Reconfiguration")  ##nom de la page
    OngletPrincipal['bg'] = 'white'  ##couleur de fond (couleur en anglais)
     
    VarsChargeur = IntVar()
    VarsDechargeur = IntVar()
    VarsConvoyeur = IntVar()
    VarsRobot = IntVar()
    VarsAVG = IntVar()
     
    SaisieChargeur = int
    SaisieDechargeur = int
    SaisieConvoyeur=int
    SaisieRobot=int
    SaisieAVG=int
     
    R_tChargeur = Checkbutton(OngletPrincipal,text ="Avez vous des chargeurs", variable=VarsChargeur).pack()
    R_tDechargeur = Checkbutton(OngletPrincipal,text ="Avez vous des dechargeurs", variable=VarsDechargeur).pack()
    R_tConvoyeur = Checkbutton(OngletPrincipal,text ="Avez vous des convoyeurs", variable=VarsConvoyeur).pack()
    R_tRobot = Checkbutton(OngletPrincipal,text ="Avez vous des robots", variable=VarsRobot).pack()
    R_tAVG = Checkbutton(OngletPrincipal,text ="Avez vous des AVGs", variable=VarsAVG).pack()
     
    def R_T():
        OngletTransport = Toplevel(OngletPrincipal)
        OngletTransport.configure(width=500,height=400)
        OngletTransport.resizable(width=False,height=False)
        OngletTransport.title("Transport")
        OngletTransport['bg'] = 'white'
        BoutonConfirmer = Button(OngletTransport,text ='Confirmer la saisie',command=OngletTransport.destroy,width=25,height=1).pack()
     
        if VarsChargeur.get() == 1 :
            textChargeur = Label(OngletTransport,text="Nombre de Chargeur").pack()
            SaisieChargeur = Entry(OngletTransport, width=30).pack()
            ch = SaisieChargeur.get()
     
        if VarsDechargeur.get() == 1 :
            textDechargeur = Label(OngletTransport,text="Nombre de Dechargeur").pack()
            SaisieDechargeur = Entry(OngletTransport, width=30).pack()
            dh = SaisieDechargeur.get()
     
        if VarsConvoyeur.get() == 1 :
            textConvoyeur = Label(OngletTransport,text="Nombre de Convoyeur").pack()
            SaisieConvoyeur = Entry(OngletTransport, width=30).pack()
            cv = SaisieConvoyeur.get()
     
        if VarsRobot.get() == 1 :
            textRobot = Label(OngletTransport,text="Nombre de Robot").pack()
            SaisieRobot = Entry(OngletTransport, width=30).pack()
            rb = SaisieRobot.get()
     
        if VarsAVG.get() == 1 :
            textAVG = Label(OngletTransport,text="Nombre de AVG").pack()
            SaisieAVG = Entry(OngletTransport, width=30).pack()
            avg = SaisieAVG.get()
     
        OngletTransport.mainloop()
     
        return
     
    BoutonIniConfig = Button(OngletPrincipal,text='Enregistrer une configuration initiale',command=R_T,width=25,height=1).pack()   ##bouton de commande pouvant appeler des fonctions
    OngletPrincipal.mainloop()  ##Arrete le programme quand l'interface est fermé

    EDIT je n'ai pas supprimé mon vieux code, voici le nouveau qui n'enregistre toujours rien mais ne fait pas d'erreur (j'essaye d'enregistrer mes valeurs dans un fichier .xls)

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    ##Enregistrer les données dans une feuille de classeur excel
    path = r"C:\Users\JESSY\Documents\VPProjects\SolutionFinal\BaseDeDonnee.xls"
    # On créer un "classeur"
    classeur = Workbook()
    # On ajoute une feuille au classeur
    f_transport = classeur.add_sheet("Ressource de transport")
     
    # Ecrire "1" dans la cellule à la ligne 0 et la colonne 0
    f_transport.write(0, 0, "Liste des transports disponibles")
    f_transport.write(1, 0, "Chargeur")
    f_transport.write(2, 0, "Dechargeur")
    f_transport.write(3, 0, "Convoyeur")
    f_transport.write(4, 0, "Robot")
    f_transport.write(5, 0, "AVG")
    # Ecrire "2" dans la cellule à la ligne 0 et la colonne 1
    f_transport.write(0, 1, "Quantité")
     
     
    OngletPrincipal = Tk()
    OngletPrincipal.configure(width=500,height=400)  ##Taille de la fenetre
    OngletPrincipal.resizable(width=False,height=False)   ##Empeche le redimensionnement automatique de la fenetre
    OngletPrincipal.title("Reconfiguration")  ##nom de la page
    OngletPrincipal['bg'] = 'white'  ##couleur de fond (couleur en anglais)
     
    VarsChargeur = IntVar()
    VarsDechargeur = IntVar()
    VarsConvoyeur = IntVar()
    VarsRobot = IntVar()
    VarsAVG = IntVar()
     
    chvar = IntVar()
    dhvar = IntVar()
    cvvar = IntVar()
    rbvar = IntVar()
    avgvar = IntVar()
     
    SaisieChargeur = IntVar()
    SaisieDechargeur = IntVar()
    SaisieConvoyeur=IntVar()
    SaisieRobot=IntVar()
    SaisieAVG=IntVar()
     
    R_tChargeur = Checkbutton(OngletPrincipal,text ="Avez vous des chargeurs", variable=VarsChargeur).pack()
    R_tDechargeur = Checkbutton(OngletPrincipal,text ="Avez vous des dechargeurs", variable=VarsDechargeur).pack()
    R_tConvoyeur = Checkbutton(OngletPrincipal,text ="Avez vous des convoyeurs", variable=VarsConvoyeur).pack()
    R_tRobot = Checkbutton(OngletPrincipal,text ="Avez vous des robots", variable=VarsRobot).pack()
    R_tAVG = Checkbutton(OngletPrincipal,text ="Avez vous des AVGs", variable=VarsAVG).pack()
     
    def R_T():
        global avg
        OngletTransport = Toplevel(OngletPrincipal)
        OngletTransport.configure(width=500,height=400)
        OngletTransport.resizable(width=False,height=False)
        OngletTransport.title("Transport")
        OngletTransport['bg'] = 'white'
        BoutonConfirmer = Button(OngletTransport,text ='Confirmer la saisie',command=OngletTransport.destroy,width=25,height=1).pack()
     
        if VarsChargeur.get() == 1 :
     
            textChargeur = Label(OngletTransport,text="Nombre de Chargeur").pack()
            SaisieChargeur = Entry(OngletTransport,textvariable=chvar, width=30).pack()
            ch = chvar.get()
            f_transport.write(1, 1, ch)
     
        if VarsDechargeur.get() == 1 :
            textDechargeur = Label(OngletTransport,text="Nombre de Dechargeur").pack()
            SaisieDechargeur = Entry(OngletTransport,textvariable=dhvar, width=30).pack()
            dh = dhvar.get()
            f_transport.write(2, 1, dh)
     
        if VarsConvoyeur.get() == 1 :
            textConvoyeur = Label(OngletTransport,text="Nombre de Convoyeur").pack()
            SaisieConvoyeur = Entry(OngletTransport,textvariable=cvvar, width=30).pack()
            cv = cvvar.get()
            f_transport.write(3, 1, cv)
     
        if VarsRobot.get() == 1 :
            textRobot = Label(OngletTransport,text="Nombre de Robot").pack()
            SaisieRobot = Entry(OngletTransport,textvariable=rbvar, width=30).pack()
            rb = rbvar.get()
            f_transport.write(4, 1, rb)
     
        if VarsAVG.get() == 1 :
            textAVG = Label(OngletTransport,text="Nombre de AVG").pack()
            SaisieAVG = Entry(OngletTransport,textvariable=avgvar, width=30).pack()
            avg = avgvar.get()
            f_transport.write(5, 1,avg)
     
        OngletTransport.mainloop()
     
    BoutonIniConfig = Button(OngletPrincipal,text='Enregistrer une configuration initiale',command=R_T,width=25,height=1).pack()   ##bouton de commande pouvant appeler des fonctions
    OngletPrincipal.mainloop()  ##Arrete le programme quand l'interface est fermé
     
    # Ecriture du classeur sur le disque
    classeur.save(path)

    Merci d'avoir lu.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Relisez l'exemple que vous avez trouvé et réfléchissez un peu.

    Entre le moment où l'Entry est crée et qu'on en récupérer le contenu via .get, il faut laisser le temps à l'utilisateur d'avoir tapé quelque chose.
    Dans l'exemple, c'est le Button "Calculer" qui permet à l'utilisateur de signaler la fin de la saisie. Normal que la fonction qui est appelée lorsqu'on clique dessus, récupère le contenu des Entry pour...

    Ceci dit quand je vois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    VarsChargeur = IntVar()
    VarsDechargeur = IntVar()
    VarsConvoyeur = IntVar()
    VarsRobot = IntVar()
    VarsAVG = IntVar()
    vous ne pensez pas "j'ai une liste de labels/étiquettes Chargeur, Dechargeur, Convoyeur,... qui est associée à une liste de variables de type IntVar".
    Difficile de ne pas penser que vous écrivez vos premiers codes et que vous vous lancez à programmer avec tkinter sans maîtriser les structures de bases.
    Ca ne va pas être simple: prenez le temps d'ouvrir un tuto.

    - 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éponses: 1
    Dernier message: 05/08/2013, 12h48
  2. Réponses: 5
    Dernier message: 20/11/2010, 02h29
  3. Enregistrement des données depuis asp vers base access
    Par abderrahim691 dans le forum ASP
    Réponses: 0
    Dernier message: 12/11/2010, 02h05
  4. [AC-2007] problème enregistrement de données via formulaire
    Par Pier-A dans le forum Modélisation
    Réponses: 1
    Dernier message: 06/05/2009, 13h27
  5. problème d’affichage des données depuis SQLServer 2005
    Par zakaria.chafi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/12/2007, 15h06

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