Intégrer un resultat photo sur Tkinter Python

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

Bonjour,

Dernièrement j'ai développé un script permettant la création de QR Code avec le module Tkinter. Mais j'aimerais ajouter à la fenêtre Tkinter le résultat obtenue c'est à dire le QR Code, or je ne sais pas comment le rajouter. En sachant que le QR s'enregistre dans l'ordinateur après saisie.

Pouvez vous donc m'indiquer le script à rajouter.

Merci pour votre réactivité.


A voir également:

2 réponses

ouplaboum
 

Bonsoir, tu t'imagines bien que sans montrer la moindre ligne de code, personne ne va pouvoir t'aider.

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

Pas faux. Excusez moi. Je débute sur ce forum.

from tkinter import *
import qrcode

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()

window.title("QR Code Generator")
window.geometry("800x600")
window.config(background="#41B77F")
window.iconbitmap("D:/Qr Code/logo.ico")

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


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

URL_label = Label(window, text = "URL : ", font=("Arial", 10),  bg="#41B77F")
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="#41B77F")
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=getEntry)
Button_Confirm.place(x = 50, y = 190)

# !!!!!! afficher le qr code !!!!!!!!!!!!!!!!!!!!
# !!!!!! partie que je cherche à résoudre !!!!!!!

# 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)

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)

#config fenetre pour add menu bar

window.config(menu=menu_bar)

window.mainloop()

0
ouplaboum
 

Bonjour, je ne comprends pas où se situe le souci.

Tu peux afficher une image dans un simple Label, Canvas, ...

...

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

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

# créer un menu
menu_bar = Menu(window)

---

Et donc

def show_qrcode():
    img = qrcode.make(res)
    img_name = name_url.get() + ".png"
    img.save(img_name)
    pimg = PhotoImage(file=img_name)
    qrcode_label.qrcode_img = pimg
    qrcode_label['image'] = pimg

Préfère l'utilisation de pack ou grid à place qui positionne en absolu, ce qui n'est pas une bonne chose.

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

Bonjour,

Merci beaucoup pour l’intérêt que vous y portez.

J'ai rajouter et modifier ces lignes de codes mais une erreur apparait :

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  
 

bonjour, tu t'imagines bien que, sans montrer ton code modifié, personne ne va pouvoir t'aider.

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

Salut, tu vois bien que j'ai simplement omis de mettre res = URL_1.get() au début de la fonction.

Note que si tu n'as pas nécessairement besoin de générer une image, tu peux utiliser les data (matrice) que propose le module.

import tkinter as tk
import qrcode

QRCODE_COLORS = 'white', 'navy'


def qrcode_generate():
    if not url_entry.get():
        return
    qrc = qrcode.QRCode()
    qrc.add_data(url_entry.get())
    qrc_size = len(qrc.get_matrix())
    margin = 177 % qrc_size // 2
    square_size = 177 // qrc_size * 2
    qrcode_canvas['bg'] = QRCODE_COLORS[0]
    qrcode_canvas.delete('rect')
    for i, row in enumerate(qrc.get_matrix()):
        for j, value in enumerate(row):
            qrcode_canvas.create_rectangle(
                margin + j * square_size,
                margin + i * square_size,
                margin + square_size + j * square_size,
                margin + square_size + i * square_size,
                fill=QRCODE_COLORS[value],
                outline=QRCODE_COLORS[value],
                tag='rect',
            )


window = tk.Tk()

url_label = tk.Label(
    window, text="URL : ", font=("Arial", 10), bg="#41B77F", fg='white'
)
url_label.grid(row=0, column=0, padx=(10, 0), pady=(10, 0))
url_entry = tk.Entry(window, bg='black', fg='white')
url_entry.grid(row=0, column=1, pady=(10, 0))
url_entry.focus()

qrcode_canvas = tk.Canvas(window, width=354, height=354, bg='yellow')
qrcode_canvas.grid(row=0, column=2, rowspan=3, padx=10, pady=10)
window.rowconfigure(2, weight=1)

generate_button = tk.Button(
    window, text="Générer", bg='black', fg='yellow', command=qrcode_generate
)
generate_button.grid(row=1, column=0, columnspan=2, pady=10)

window.mainloop()

Code qui devrait faire ce que tu souhaites, à tester.

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  
 

Merci, c'est fait !

1