Enregistrer en format pdf une fenetre tkinter Python

Résolu
GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
 jouflu -

Bonjour,

Je voudrais associer à la commande "print" dans le menu_bar, une fonction permettant d'enregistrer au format pdf dans les dossiers la "capture d'écran" ou (même si j'imagine que c'est beaucoup plus compliqué pour mon niveau amateur), une feuille pdf avec les informations suivantes :

  • URL,
  • Nom,
  • date,
  • Qr code.

J'aimerais pouvoir coder cette dernière, mais je ne sais pas comment faire. Voici mon code actuel :

from tkinter import *
import qrcode
from tkinter import filedialog
from tkinter import messagebox 
import webbrowser
import os

window = Tk()

def getEntry():
    res = URL_1.get()
    print(res)
    img = qrcode.make(res)
    img.save(name_url.get() + ".png")

def clear():
    URL_1.delete("0","end")
    name_url.delete("0","end")
    
def window_quit():
    window.destroy()

def open_module():
    filename = filedialog.askopenfilename(initialdir = "/", title = "Select a File", filetypes = (("Text files", "*.txt*"), ("all files", "*.*")))
    label_file_explorer.configure(text="File Opened: "+filename)
       
            
def show_qrcode():
    img = qrcode.make(URL_1.get())
    img_name = name_url.get() + ".png"
    img.save(img_name)
    pimg = PhotoImage(file=img_name)
    qrcode_label.qrcode_img = pimg
    qrcode_label['image'] = pimg

def help_training():
    webbrowser.open_new("file:///D:/Qr%20Code/training%20help.html")                                                                                                                                            
                                                                                  
window.title("QR Code Generator")
window.geometry("800x600")
window.config(background="blue")
window.iconbitmap("D:/Qr Code/logo.ico")

label_title = Label(window, text="QR Code Generator", font=("Arial", 20), bg="blue", fg="white")
label_title.pack()

# créer une entrée pr donner l'URL

URL_label = Label(window, text = "URL : ", font=("Arial", 10),  bg="blue")
URL_label.place( x = 50, y = 50)    

URL_1 = Entry(window) 
URL_1.place(x = 50, y = 80)

# créer une entrée pr donner le nom du QR Code

name_label = Label(window, text = "URL's name :", font=("Arial", 10), bg="blue")
name_label.place( x = 50, y = 110)
name_url = Entry(window)
name_url.place(x = 50, y = 140)

Button_Confirm = Button(window, height=1, width=10, text="Confirm", command=show_qrcode)
Button_Confirm.place(x = 50, y = 190)

qrcode_label = Label(window, bg="blue")
qrcode_label.place(x=450, y=80)

# créer un menu

menu_bar = Menu(window)

file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="New", command=clear)
file_menu.add_command(label="Print", command=#c est ici que doit être le bouton)

options_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Options", menu=options_menu)
options_menu.add_command(label="Quit", command=window_quit)

help_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Help", menu=help_menu)
help_menu.add_command(label="Training", command=help_training)


#config fenetre pour add menu bar

window.config(menu=menu_bar)

window.mainloop()

Merci pour votre aide si précieuse.

Cordialement


Windows / Firefox 108.0


A voir également:

3 réponses

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

Bonjour,

En réponses aux message #1 et #6.

Pour commencer, il faut que ton menu File > print appelle une fonction (disons print_pdf)

file_menu.add_command(label="Print", command=print_pdf)

Il faut ensuite créer le fichier pdf. C'est là que le module fpdf qu'yg_be propose (voir message #2), ou tout autre module équivalent, peut entrer en jeu pour générer ton fichier pdf. Tu peux regarder ce tutoriel pour démarrer, qui montre comment créer un fichier pdf impliquant du texte avec un logo (dans ton cas ce pourrait être le QR code).

Quand elle est déclenchée, la fonction print_pdf déclenche les opérations suivantes :

  • Récupérer les informations saisies par l'utilisateur
  • Générer le QR code
  • Créer le fichier pdf, dans lequel on écrit le QR code et le texte désiré

Bonne chance

1
GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 

Merci !

Je vais essayer mais je pense que cela correspond à ma requête.

Cdt

0
GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 

J'ai donc essayé, un bon début.

Mais je ne trouve pas quel est la ligne pour ajouter une image dans le pdf. Pouvez vous me l'indiquer ?

Cdt

0
jouflu > GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 

Bonsoir.

Avec la méthode image.

https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.image

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

Tu nous montres un code Python.  Il fonctionne bien?  As-tu une question à ce propos?

Tu mentionnes "menu_bar": de quoi s'agit-il?

Tu mentionnes "URL, Nom, date, et le Qr code": quel url, quel nom, quelle date, quel QR code?

0
GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 

Tout est expliqué dans le code, essayez le si vous souhaitez.

Et oui il marche

cdt

0
joubaho
 

Salut, avec fpdf.

.

https://pypi.org/project/fpdf2/

.

C'est la bibliothèque pdf la plus imple à utiliser, générer une page avec 3 lignes de texte et une image ne devrait pas être trop complexe à réaliser.

.

Mais autant générer une simple image pour si peu de choses à mettre dans ton pdf, tu peux déjà de base avec tkinter générer un postscript, et si tu as besoin d'un autre format, alors pillow sera nécessaire.

0
GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 

Merci.

Mais en fait, je ne sais pas si vous avez essayé le script.

Protocole :

- On rentre l'URL et son nom

- Le QR Code s'affiche dans la fenêtre Tkinter ET s'enregistre dans l'explorateur de fichiers.

- De plus, j'aimerais que si on le demande à l'aide de la commende Print dans le menu_bar, un PDF s'enregsitre avec écrit l'URL, son nom, et le Qr code.

Or si vous avez d'autres solutions similaires, je suis preneur !

Merci,

cdt

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 

as-tu essayé avec fpdf?

1
GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

non comment nous faisons ? Quelles sont les commandes ?

0
jouflu > GEEK3_3843 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour GEEK3_3843.

.

Les commandes ?

Quelles commandes ?

.

Tu installes fpdf2 avec pip, puis tu suis les rapides et succincts didacticiels de manipulations de cette bibliothèque. Il n'y a pas de commandes magiques pour générer un pdf avec le conenu que tu désires. Programmer, c'est aussi apprendre à installer des bibliothèques, apprendre à s'en servir, savoir lire de la documentation, surtout ça, il faut s'en manger énormément.

.

Bonne continuation.

1