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

Bibliothèques tierces Python Discussion :

[Tkinter] De la page GUI à du PDF


Sujet :

Bibliothèques tierces Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut [Tkinter] De la page GUI à du PDF
    Salut,
    Je sais, le titre n'est pas clair. J'ai une application tkinter/python avec des labelframes contenant des labels et des entries, rangés par la méthode grid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    self.champ=LabelFrame(self,text="Date")
    self.champ.grid(row=0,column=0)
     
    Label(self.champ,text="Nous sommes le").grid(row=0,column=0)
     
    self.stg[0].set(date.today().strftime('%d-%m-%Y'))
    Entry(self.champ,variable=self.stg[0]).grid(row=0,column=1)
    Existe-t-il un module qui fasse en quelque sorte un Print Screen de mon code tel qu'il s'exécute (c'est-à-dire qui respecte la position des éléments définie par grid) et le convertisse en PDF? Il pourrait s'agir en quelque sorte d'un traducteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Texte du labelframe -> titre du tableau
    Texte du label -> titre de la ligne dans le tableau
    Variable de l''entry -> valeur correspondante
    Merci pour votre réponse.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Salut,

    Regarde ReportLab. Il te fera ça assez simplement.

    A +

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Salut,
    Merci pour ta réponse: j'avais eu l'intuition que ReportLab pourrait le faire. Tu n'aurais pas par hasard un bout de code pertinent avec l'exemple que j'ai donné pour m'inspirer?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Salut,

    J'ai récupéré un bout de code que j'avais écrit y'a qq mois. J'ai enlevé en gros tout le superflu pour te laisser uniquement de quoi comprendre comment créer facilement un tableau à 3 colonnes sous reportlab. (Je ne l'ai pas essayé comme ça, donc je ne sais pas si cela fonctionne bien mais en tout cas cela te donne une idée de ce qu'il faut faire).

    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
     
    from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle
    from reportlab.rl_config import defaultPageSize
    from reportlab.lib.units import inch, cm
    from reportlab.lib import colors
     
    PAGE_HEIGHT=defaultPageSize[1]
    PAGE_WIDTH=defaultPageSize[0]
    nomDoc = "mon_doc.pdf"
    doc = SimpleDocTemplate(nomDoc)
    story = []
     
    # Style du tableau
    style = TableStyle([('GRID', (0,0), (-1,-2), 0.25, colors.black),
                        ('VALIGN', (0,0), (-1,-1), 'TOP'), # Centre verticalement toutes les cases
                        ('ALIGN', (0,0), (-1,-1), 'LEFT'), # Titre du groupe à gauche
                        ('ALIGN', (0,1), (0,-1), 'RIGHT'), # Colonne dates alignée à droite
                        ('ALIGN', (1,1), (1,-2), 'LEFT'), # Colonne tâches alignée à gauche
                        ('ALIGN', (2,1), (2,-1), 'CENTRE'), # Colonne temps alignée au centre
                        ('SPAN',(0,-1),(1,-1)), # Fusionne les 2 lignes du bas pour faire case Total
                        ('SPAN',(0,0),(2,0)), # Fusionne les 3 lignes du haut pour faire le titre du groupe
                        ('FONT',(0,0),(-1,-1), "Helvetica", 8), # Donne la police de caract. + taille de police 
                        ('FONT',(0,0),(0,0), "Helvetica-Bold", 8), # Donne la police de caract. + taille de police du titre de groupe
                        ('FONT',(0,-1),(-1,-1), "Helvetica", 6), # Donne la police de caract. + taille de police de la ligne de total
                        ('BACKGROUND', (0,0), (2,0), colors.moccasin), # Donne la couleur de fond du titre de groupe
                        ])
     
    largeursColonnes = (150, 320, 50)
     
    # Création du titre du tableau
    dataTableau = [("Titre col1", "Titre col2" , "Tite col3"),]
     
    # Création de chaque ligne
    for texte1, texte2, texet3 in listeLignes :
        # Intégration données dans le tableau
        dataTableau.append( (texte1, texte2, texte3) )
     
    # Création du tableau
    tableau = Table(dataTableau, largeursColonnes)
    tableau.setStyle(style)
    story.append(tableau)
     
    # Finalisation et enregistrement du PDF
    doc.build(story)
     
    # Affichage du PDF
    os.startfile(nomDoc)
    J'espère que ça ira.

    A +

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Salut,
    Merci pour ta réponse.
    Tu me corrigeras si je dis des bêtises, mais en fait avec ReportLab il faut redéfinir le placement des labels, entries, etc... dans la page. Il ne lit pas la géométrie donnée dans grid().

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Je dois être un peu fatigué (ou un peu c..) car je n'ai pas bien compris ce que tu voulais dire... Tu peux reformuler ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Je vais essayer.
    J'ai une appli tkinter avec de nombreuses pages qui contiennent chacune plusieurs labelframes, labels, entries. Ils sont gérés par une méthode grid(). Maintenant, je voudrais convertir la page que j'ai en PDF, latex ou autre pour impression mais si possible sans devoir redéfinir toute la géométrie, puisque tout est déjà donné dans grid().
    Ainsi, pour n'importe quelle configuration, je pourrais faire une routine qui prend les données de grid, le label des labels et la variable dans les entries, puis convertit tout cela directement en PDF ou en latex.
    Est-ce plus clair?

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/07/2006, 16h05
  2. [FPDF] générer des pages PHP en PDF
    Par saint-pere dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/09/2005, 18h13
  3. [FPDF] Page PHP convertion PDF totale
    Par toflofr dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 23/09/2005, 13h32
  4. [CR8.5]Texte de plusieurs page généré en pdf
    Par Nout dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 26/07/2005, 08h26
  5. nombre de page dans un PDF ???
    Par rodolphedj dans le forum ASP
    Réponses: 15
    Dernier message: 08/09/2004, 13h12

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