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

Tkinter Python Discussion :

Pb d'enregistrement classe


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Points : 65
    Points
    65
    Par défaut Pb d'enregistrement classe
    Bonjour,

    Je cherche depuis des semaines, j'arrive à rien.
    Je voudrais enregistrer une classe via tkinter puis la récupérer via tkinter.

    Pour du texte simple je fais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #Enregistrement du texte "Boujour à tous !"
    def foncBoutNewValid():
        NomFichier = 'test.txt'
        Fichier = open(NomFichier, 'w') 
        Fichier.write('Bonjour à tous !')
        Fichier.close()
    #Lecture du texte "Boujour à tous !"
    def testRecup():
        Fichier = open('test.txt', 'r')  
        chaine = Fichier.read()
        print(chaine)
        Fichier.close()
    Ca fonctionne bien (def foncBoutNewValid(): fonction lancé d'un bouton tkinter et def testRecup() idem)

    Pour une classe j'ai fait cela :
    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
    def foncBoutNewValid():
        varLog = ObjNewNom.get()
        varCode = ObjNewCode.get()
        varRensei = objNewRenseig.get()
     
     
        #       Création de l'objet de classe Codes
        Code01 = Codes(varLog, varCode, varRensei)
        print(Code01.log, Code01.code, Code01.renseignement)
        #       Enregistrement des données
        with open("c:/0_Les_Codes/test2.txt", "wb") as fichier:
            a = pickle.Pickler(fichier)
            Code01 = Codes(varLog, varCode, varRensei)
            a.dump(Code01)
            print(Code01)
    print(Code01) indique bien la classe crée grâce aux champs ObjNewNom, ObjNewCode et objNewRenseig (objets Entry), ensuite je veux récupérer cette classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def testRecup():
        aa = open("c:/0_Les_Codes/test2.txt", "rb")
        cc = pickle.Unpickler(aa).load()
        aa.close()
        print(Code01)

    Ca ne marche pas et je ne trouve pas comment faire ! ça me renvoi : "NameError: name 'Code01' is not defined", j'ai essayé de déclarer Code01 en global un peu partout, rien n'y fait, je ne sais même pas si c'est bien Code01 que je doit mettre dans le print de fin !!???
    Si quelqu'un pouvais m'aider ?

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Salut,

    Si tu as picklé ton instance de classe, alors c'est elle que tu dois récupérer.

    Sachant que le nom que tu lui avais donné 'Code01' n'est pas préservé, si tu pickle.load avec le nom 'cc' alors c'est 'cc' la nouvelle référence de ta classe et non pas 'CodeO1'

    Ou bien tu changes Code01 = pickle.Unpickler(aa).load()

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Points : 65
    Points
    65
    Par défaut
    Bonjour VinsS,

    Oui, j'avais essayé mais ça me retourne :
    <__main__.Codes object at 0x0566FF70>
    avec C'est normal ? il devrait pas me retourner :
    toto 1234 truc
    si je rentre "toto" puis "134" puis "truc" dans 3 champs Entry ?
    Car c'est ce que ça me donne ici (en gras dans le code):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def foncBoutNewValid():
        #       Récupération des données de la fenêtre NEW (création d'un nouveau code)
        varLog = ObjNewNom.get()
        varCode = ObjNewCode.get()
        varRensei = objNewRenseig.get()
        #   Récupération de la case à cocher
        if retour0.get():
            varTruq =1  # Coché
        else:
            varTruq =0  # Pas coché
    
        #       Création de l'objet de classe Codes
        Code01 = Codes(varLog, varCode, varRensei, varTruq)
        print(Code01.log, Code01.code, Code01.renseignement, Code01.truquee)
    avec aussi la ligne :
    <__main__.Codes object at 0x05732330>

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Ça me parait normal, oui.

    et print(cc.log, cc.code) devrait être ce que tu attends.

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Points : 65
    Points
    65
    Par défaut
    Ben oui, j'ai tellement fait de tests que j'était sûr d'avoir essayé, je comprends un peu mieux, merci pour ton temps.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 29/07/2013, 14h51
  2. classe non enregistrée
    Par kilian dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/11/2006, 12h35
  3. Réponses: 7
    Dernier message: 01/09/2006, 14h19
  4. [ToutlookApplication] Classe non enregistrée
    Par nico33410 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2005, 10h36
  5. Erreur : La classe n'est pas enregistrée
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/08/2005, 12h04

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