Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ouvrir une base pydblite et afficher une requette

    28 novembre 2015 à 16:51:26

    Bonjour

    Je bloque depuis un certain temps sur un resultat d'une requette avec une base pydblite. j'ai bien un resultat juste en test (PYscripter) mais je n'ai pas l'affichage du resultat dans le label, quelque chose m'echappe..

    Voici mon code.

    # modules
    from tkinter import *
    
    # methodes
    def pydblite(event):
        from pydblite.pydblite import Base
        # lecture du contenu de la base - champs nom , tel
        db = Base('numtel.pdl')
        if db.exists():
            db.open()
        for rec in db(nom=entree_nom.get()):
            print(rec['tel'])
            msg_tel.set((rec['tel']))
    
    
    # #
    def quitter():
        fen.destroy()
    def resultat():
        entree_nom.bind("<Return>", pydblite)
        return msg_tel.get()
    
    msg_nom = StringVar()
    msg_tel = StringVar()
    
    # prog
    fen = Tk()
    
    # frame
    frame_nom = LabelFrame(fen, text = "NOM", labelanchor= N)
    frame_nom.pack(padx =10, pady = 10, side=LEFT)
    
    frame_tel= LabelFrame(fen, text = "TEL", labelanchor= N)
    frame_tel.pack(padx =10, pady = 10, side=LEFT)
    #
    #  entree nom
    entree_nom=Entry(frame_nom, textvariable = msg_nom, bd=5)
    entree_nom.bind("<Return>", pydblite)
    entree_nom.pack()
    #
    # label reponse tel apres action sur la touche ENTER
    label_tel=Label(frame_tel, textvariable = msg_tel)
    label_tel.pack()
    #
    # bouton quit
    bouton_quit=Button(fen, text='Quit', command=quitter).pack(side=BOTTOM)
    
    # ------------------------------------------------------------------------------
    fen.minsize(200,200)
    fen.mainloop()

    le resultat est bon apres le test avec Pyscripter

    *** Console de processus distant Réinitialisée *** 
    >>> 
    >>> 07 77 77
    07 77 77

    je n'arrive pas a recuper ce numero dans le label "tel"

    Merci de votre aide

    Bon WE


    • Partager sur Facebook
    • Partager sur Twitter
      29 novembre 2015 à 12:13:36

      En ligne 11, tu récupères l'entrée de ton TextEntry mais il contient un retour à la ligne derrière. Ca vient peut-être de là ? Tu pourrais utiliser un strip() sur cette chaîne.

      • Partager sur Facebook
      • Partager sur Twitter
        29 décembre 2015 à 23:50:48

        Bonjour
        J'ai bien avancé dans le script, il y a du resultat.
        En tapant milou dans "l'entry" j'obtient la bonne reponse de ma base pydblite = 88, dans le label. ( resultat des prints=
        >>>
        verif_1 88
        verif_2 milou
        verif_3 88
        >>>
        j'ai rajouté un bouton "clear" pour effacer l'entry et le label. le probleme et que j'arrive à reseter "l'entry" avec "msg_tel.delete(0.END) ou "label_tel.delete(0.END)". j'obtient ce message = msg.tel.delete(0,END)
        NameError: name 'msg' is not defined
        voici mon code
        merci de votre aide
        et bonnes fetes de fin d'année

        # modules ----------------------------------------------------------------------
        from tkinter import *
        
        # methodes ---------------------------------------------------------------------
        def pydblite(event):
            from pydblite.pydblite import Base
            # lecture du contenu de la base - champs nom , tel
            db = Base('numtel.pdl')
            if db.exists():
                db.open()
            for rec in db(nom=entree_nom.get()):
                msg_tel.set((rec['tel']))
                print("verif_1",rec['tel'])
                print("verif_2",entree_nom.get())
                print("verif_3",msg_tel.get())
        # #
        def quitter():
            fen.destroy()
        def resultat():
            entree_nom.bind("<Return>", pydblite)
        def nettoyage():
            entree_nom.delete(0,END)
            msg.tel.delete(0,END)
        
        
        # prog -------------------------------------------------------------------------
        fen = Tk()
        
        # frame
        frame_nom = LabelFrame(fen, text = "NOM", labelanchor= N)
        frame_nom.pack(padx =10, pady = 10, side=LEFT)
        
        frame_tel= LabelFrame(fen, text = "TEL", labelanchor= N)
        frame_tel.pack(padx =10, pady = 10, side=LEFT)
        #
        #  entree nom
        msg_nom = StringVar()
        entree_nom=Entry(frame_nom, textvariable = msg_nom, bd=5)
        msg_nom.set("")
        entree_nom.bind("<Return>", pydblite)
        entree_nom.pack()
        #
        # label reponse tel apres action sur la touche ENTER
        msg_tel= StringVar()
        label_tel=Label(frame_tel,textvariable = msg_tel)
        label_tel.pack()
        msg_tel.set("")
        #
        # bouton quit
        bouton_quit=Button(fen, text='Quit', command=quitter).pack(side=BOTTOM)
        bouton_clear=Button(fen,text="clear",command=nettoyage).pack()
        # ------------------------------------------------------------------------------
        fen.minsize(220,220)
        fen.mainloop()



        • Partager sur Facebook
        • Partager sur Twitter

        Ouvrir une base pydblite et afficher une requette

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown