Enregistrer en format pdf une fenetre tkinter Python

Résolu/Fermé
GEEK3_3843 Messages postés 44 Date d'inscription jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023 - Modifié le 19 janv. 2023 à 11:05
 jouflu - 19 janv. 2023 à 22:55

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 33367 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 novembre 2024 7 801
Modifié le 19 janv. 2023 à 11:21

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 jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023
19 janv. 2023 à 14:47

Merci !

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

Cdt

0
GEEK3_3843 Messages postés 44 Date d'inscription jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023
19 janv. 2023 à 21:43

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 jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023
19 janv. 2023 à 22:55

Bonsoir.

Avec la méthode image.

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

0
yg_be Messages postés 23340 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 551
17 janv. 2023 à 21:54

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 jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023
18 janv. 2023 à 15:58

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

Et oui il marche

cdt

0

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 jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023
18 janv. 2023 à 16:02

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 23340 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 551 > GEEK3_3843 Messages postés 44 Date d'inscription jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023
18 janv. 2023 à 16:25

as-tu essayé avec fpdf?

1
GEEK3_3843 Messages postés 44 Date d'inscription jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023 > yg_be Messages postés 23340 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
18 janv. 2023 à 21:31

non comment nous faisons ? Quelles sont les commandes ?

0
jouflu > GEEK3_3843 Messages postés 44 Date d'inscription jeudi 27 octobre 2022 Statut Membre Dernière intervention 27 juillet 2023
19 janv. 2023 à 11:26

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