Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec tkinter et fpdf

Sujet résolu
    19 décembre 2021 à 10:46:35

    #Lecture du excel
    from tkinter.constants import W
    import pandas as pd
    from fpdf import FPDF 
    from tkinter import Button
    from tkinter import Entry
    from tkinter import StringVar
    from tkinter import Tk
    from tkinter import Label
    from tkinter.filedialog import askopenfilename
    
    
    #creation de l'interface
    FILETYPES = [ ("", "*.*") ]
    root = Tk() 
    root.geometry('640x480')
    filename = StringVar(root)
    
    #variable
    y = 0
    z = 0
    
    #creation de la recherche du fichier
    def set_filename():
        filename.set(askopenfilename(filetypes=FILETYPES))
                
    #ajout texte a l'interface
    choix = Label(root, text='Le fichier choisie est :')
    choix.pack()
    entry = Entry(root, textvariable=filename)
    entry.pack()
    
    #ajout du bouton parcourir
    button = Button(root, text='Parcourir', command=set_filename)
    button.pack()
    
    #variable pour le path
    chemin = filename
    
    #lecture du excel
    data = pd.read_excel(chemin)
    
    #settings du PDF
    pdf = FPDF('P', 'mm', 'A4') 
    pdf.add_page() 
    pdf.set_font("Arial", size = 12) 
    
    #entrée voulu dans le excel
    x = 4
    
    #creation des liste
    nom = []
    age = []
    
    #mise des donnée dans les liste
    for v in range(0, x) : 
        nom.append(data['Name'].loc[v])
        age.append(data['Age'].loc[v].astype(int))
    
    #ecrit dans un fichier 
    for z in range(0, x) :
    
        if data['PassengerId'].loc[z]== z + 1 :
    
            pdf.cell(200, 10, "Titre du Doc " + str(z), ln = 1, align = 'C') 
            pdf.cell(200, 10, txt=str(z + 1) + ' Le nom du client est : ' + str(nom[z]) + ' et son age est : ' + str(age[z]), ln = 2, align = 'L') 
            print(str(nom[z]))
            pdf.output("C:/Users/matte/datatest/Dossier Client/Client" + str(z + 1) + ".pdf")
                
        else:
        
            print('yapa')
        
        y = y + 1
    
    root.mainloop()

     J'ai un problème avec les priorités car quand je lance mon programme sa me dit que mon chemin de fichier n'est pas specifier mais c'est normal car je veut le specifier à la "main"  et donc je comprend pas l'erreur.

    Et j'ai une autre erreur c'est quand je génère mes pdf les valeur a l'interieur reste les meme alors que je print dans ma boucle et les valeurs change bien. 

    Merci pour votre aide.

    -
    Edité par MowglyM 19 décembre 2021 à 10:57:21

    • Partager sur Facebook
    • Partager sur Twitter
      19 décembre 2021 à 11:22:56

      En séparant sur deux instructions ta ligne 25 ?
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        19 décembre 2021 à 11:49:13

        MowglyM a écrit:

         J'ai un problème avec les priorités car quand je lance mon programme sa me dit que mon chemin de fichier n'est pas specifier mais c'est normal car je veut le specifier à la "main"  et donc je comprend pas l'erreur.

        Vous pensez séquentiel: ligne 41 read_excel est appelé avec un chemin qui n'a pas encore été modifié par l'utilisateur. Celui ci ne pourra le faire qu'en cliquant sur le Button. Ce qui ne pourra arriver qu'après l'exécution de la ligne 76 (l'entrée dans mainloop).

        Avec tkinter, il faut penser évènements... et c'est toute une logique de programmation à apprendre.

        • Partager sur Facebook
        • Partager sur Twitter
          19 décembre 2021 à 12:08:38

          Ah oui effectivement ligne 38, filename est toujours une chaîne vide je pense et ligne 41 c'est le drame.
          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            19 décembre 2021 à 12:20:43

            mps a écrit:

            MowglyM a écrit:

             J'ai un problème avec les priorités car quand je lance mon programme sa me dit que mon chemin de fichier n'est pas specifier mais c'est normal car je veut le specifier à la "main"  et donc je comprend pas l'erreur.

            Vous pensez séquentiel: ligne 41 read_excel est appelé avec un chemin qui n'a pas encore été modifié par l'utilisateur. Celui ci ne pourra le faire qu'en cliquant sur le Button. Ce qui ne pourra arriver qu'après l'exécution de la ligne 76 (l'entrée dans mainloop).

            Avec tkinter, il faut penser évènements... et c'est toute une logique de programmation à apprendre.


            Merci pour votre réponse je débute en programmation c'est mon premier projet du coup j'ai encore beaucoup a apprendre.

            toute les critique m'aide à progresser

            • Partager sur Facebook
            • Partager sur Twitter
              20 décembre 2021 à 11:20:25

              don c ton code de la ligne 37 à 74 est à mettre dans une fonction appelée quand tu veux générer ton pdf (peut-être appelée par un second bouton)
              • Partager sur Facebook
              • Partager sur Twitter

              Problème avec tkinter et fpdf

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown