Valider 6314372d rédigé par Thorfin89's avatar Thorfin89
Parcourir les fichiers

Correction sur la génération du code WIFI

parent 955f2cc1
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -25,7 +25,7 @@ voire quelques fonctions supplémentaires à ajouter.
- tk-tools

## Codage d'un accès Wifi :
WIFI:T:*cryptage(nopass, WEP, WAPA)*;S:ssid;P:*motdepasse*;H:*caché(true)*
WIFI:T:*cryptage(nopass, WEP, WPA)*;S:ssid;P:*motdepasse*;H:*caché(true / false)*

#### Exemple 1:

+50 −46
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -22,17 +22,16 @@ current_file = "temp.png"
# ===== FONCTIONS =====

def init():
    # Réinitialisation de la configuration du QRCode
    global bg_color
    global fg_color
    # réinitialisation de la configuration du QRCode
    bg_color = "#FFFFFF"
    bg_color_btn.config(bg=bg_color)
    fg_color = "#000000"
    fg_color_btn.config(bg=fg_color)
    # bg_color_btn.config(bg=bg_color)
    boxe_size_scale.set(5)
    border_size_scale.set(2)
    # on vide toutes les zones de saisie
    # On vide toutes les zones de saisie
    ssid_name.delete(0, 'end')
    password.delete(0, 'end')
    text.delete(0, 'end')
@@ -45,7 +44,7 @@ def new_file():
    current_file = "temp.png"


# ouverture d'un fichier
# Ouverture d'un fichier
def open_file():
    global current_file
    file = filedialog.askopenfilename(title="Ouvrir un QRCode au format PNG",
@@ -53,16 +52,16 @@ def open_file():
                                      initialdir="./qrcodes")
    if file != "":
        current_file = file
        # on vide les zones de saisie du WIFI
        # On vide les zones de saisie du WIFI
        init()
        # on insère le nouveau code dans les données à coder
        # On insère le nouveau code dans les données à coder
        text.insert(0, decode(file))
        # on code puis on affiche
        # On code puis on affiche
        code()
        display_qrcode()


# enregistrer un fichier sous
# Enregistrer un fichier sous
def save_as():
    global current_file
    file = filedialog.asksaveasfilename(title="Enregistrer le QRCode au format PNG sous",
@@ -87,19 +86,19 @@ def save():
    qr.add_data(text.get())
    qr.make(fit='True')

    # création et sauvegarde de l'image du QRCode
    # Création et sauvegarde de l'image du QRCode
    img = qr.make_image(fill_color=fg_color, back_color=bg_color)
    img.save(current_file)


# lit l'image au format PNG et renvoie le texte
# Lit l'image au format PNG et renvoie le texte
def decode(file):
    decoder = cv2.QRCodeDetector()
    data_text, points, data_code = decoder.detectAndDecode(cv2.imread(file))
    return data_text


# choix de la couleur du fond
# Choix de la couleur du fond
def set_bg_color():
    global bg_color
    (rgb, selection) = askcolor()  # Appel de la boîte de dialogue 'Couleur'
@@ -110,14 +109,14 @@ def set_bg_color():
            code()
            display_qrcode()

        # si la couleur du fond du code est identique à celle de la fenêtre
        # Si la couleur du fond du code est identique à celle de la fenêtre
        if bg_color == "#808080":
            right_frame.config(bg="#FFFFFF")
        else:
            right_frame.config(bg="#808080")


# choix de la couleur du code
# Choix de la couleur du code
def set_fg_color():
    global fg_color
    (rgb, selection) = askcolor()  # Appel de la boîte de dialogue 'Couleur'
@@ -147,18 +146,18 @@ def transfert():

        # SSID caché OUI/NON
        if hide_choice.get() == "OUI":
            cache = "True"
            cache = "true"
        else:
            cache = ""
            cache = "false"

        if (crypt != "Aucun" and pwd != "") or (crypt == "Aucun" and password.get() == ""):

            # mise à jour du texte à coder
            # Mise à jour du texte à coder
            text.delete(0, 'end')
            code_wifi = "WIFI:T:" + crypt + ";S:" + ssid + ";P:" + pwd + ";H:" + cache
            code_wifi = "WIFI:T:" + crypt + ";P:" + pwd + ";S:" + ssid + ";H:" + cache + ";"
            text.insert(0, code_wifi)

            # création de l'image du qrcode et affichage
            # Création de l'image du qrcode et affichage
            code()
            display_qrcode()

@@ -191,7 +190,7 @@ def code():
    qr.add_data(text.get())
    qr.make(fit='True')

    # création et sauvegarde de l'image du QRCode
    # Création et sauvegarde de l'image du QRCode
    img = qr.make_image(fill_color=fg_color, back_color=bg_color)
    img.save("temp.png")

@@ -199,11 +198,11 @@ def code():
def display_qrcode():
    global qrcode_img

    # calcul de la taille du QRCode pour le centrer dans la fenêtre
    # Calcul de la taille du QRCode pour le centrer dans la fenêtre
    img = Image.open("temp.png")
    size = img.size

    # affichage du QRCode
    # Affichage du QRCode
    qrcode_img = PhotoImage(file="temp.png")
    qrcode_label.config(image=qrcode_img, bg="white")
    qrcode_label.place(x=198 - size[0] // 2, y=198 - size[1] // 2)  # centrage
@@ -211,13 +210,15 @@ def display_qrcode():

def info():
    messagebox.showinfo(title="Informations",
                        message=" objQRCode est une interface graphique"
                        message="objQRCode v 1.1"
                                "\n----------------------"
                                "\n\n\n objQRCode est une interface graphique"
                                "\n pour qrcode sous Python"
                                "\n "
                                "\n Daniel SAZERAT - 2023")


# création de la fenêtre principale
# Création de la fenêtre principale
root = Tk()
root.geometry('800x480+100+100')
root.resizable(width=False, height=False)
@@ -244,7 +245,7 @@ menu_aide = Menu(menu_general, tearoff=0)
menu_general.add_cascade(label="Aide", menu=menu_aide)

# Création des sous menus 'Aide'
menu_aide.add_command(label="Info", command=info)
menu_aide.add_command(label="À propos", command=info)

# Configuration de la barre des menus
root.config(menu=menu_general)
@@ -261,75 +262,78 @@ bottom_frame.place(x=0, y=421, width=800, height=220)

# ===== WIDGETS =====

qrcode_cfg_title = Label(left_frame, text="CONFIGURATION DU QRCODE :", bg="#CCCCCC")
qrcode_cfg_title.place(x=20, y=20)

# Choix des couleurs
color_choice = Label(left_frame, text="Choix de couleurs :", bg="#CCCCCC")
color_choice.place(x=20, y=18)
color_choice.place(x=30, y=45)
bg_color_btn = Button(left_frame, bg=bg_color, relief=SUNKEN, command=set_bg_color)
bg_color_btn.place(x=82, y=62, width=20, height=20)
bg_color_btn.place(x=82, y=87, width=20, height=20)
fg_color_btn = Button(left_frame, bg=fg_color, relief=SUNKEN, command=set_fg_color)
fg_color_btn.place(x=70, y=50, width=20, height=20)
fg_color_btn.place(x=70, y=75, width=20, height=20)

# choix de la BOXE_SIZE
# Choix de la BOXE_SIZE
boxe_size = IntVar()
boxe_size_scale = Scale(left_frame, from_=1, to=10, variable=boxe_size, orient=HORIZONTAL)
boxe_size_scale.config(bg="#CCCCCC", label="Taille des points :", length=180, highlightthickness=0)
boxe_size_scale.set(5)
boxe_size_scale.place(x=180, y=18)
boxe_size_scale.place(x=180, y=45)

# choix de la taille de la bordure
# Choix de la taille de la bordure
border_size = IntVar()
border_size_scale = Scale(left_frame, from_=1, to=10, variable=border_size, orient=HORIZONTAL)
border_size_scale.config(bg="#CCCCCC", label="Épaisseur de la bordure :", length=180, highlightthickness=0)
border_size_scale.set(2)
border_size_scale.place(x=180, y=90)
border_size_scale.place(x=180, y=110)

# ===== point d'accès WIFI =====
# ===== Point d'accès WIFI =====
wifi_title = Label(left_frame, text='CONFIGURATION DU WIFI :', bg="#CCCCCC")
wifi_title.place(x=30, y=175)
wifi_title.place(x=20, y=195)

# SSID
ssid_name_title = Label(left_frame, text='SSID :', bg="#CCCCCC")
ssid_name_title.place(x=30, y=200)
ssid_name_title.place(x=30, y=220)
ssid_name = Entry(left_frame, width=40)
ssid_name.place(x=30, y=225)
ssid_name.place(x=30, y=245)

# Password
password_title = Label(left_frame, text='Mot de passe :', bg="#CCCCCC")
password_title.place(x=30, y=250)
password_title.place(x=30, y=270)
password = Entry(left_frame, width=40)
password.place(x=30, y=275)
password.place(x=30, y=295)

# Cryptage
crypt_title = Label(left_frame, text='Cryptage :', bg="#CCCCCC")
crypt_title.place(x=300, y=200)
crypt_title.place(x=300, y=220)
crypt_list = ["WPA", "WEP", "Aucun"]
crypt_choice = SmartSpinBox(root, entry_type='str', width=8, justify=CENTER,
                            values=crypt_list, callback=no_password)
crypt_choice.place(x=300, y=225)
crypt_choice.place(x=300, y=245)

# Caché
hide_title = Label(left_frame, text='Caché :', bg="#CCCCCC")
hide_title.place(x=300, y=250)
hide_title = Label(left_frame, text='SSID caché :', bg="#CCCCCC")
hide_title.place(x=300, y=270)
hide_list = ["NON", "OUI"]
hide_choice = Spinbox(left_frame, values=hide_list, width=8, justify=CENTER)
hide_choice.place(x=300, y=275)
hide_choice.place(x=300, y=295)

# Transfert du code dans les données à coder
transfert_btn = Button(left_frame, text="Transfert\nvers\ndonnées",
                       bg="#61AEF9", command=transfert)
transfert_btn.place(x=30, y=320, width=60, height=60)
transfert_btn.place(x=30, y=340, width=60, height=60)

# bouton de création du QRCode
# Bouton de création du QRCode
code_btn = Button(left_frame, text="Créer le Code", bg="#88FF88", command=verif_before_code)
code_btn.place(x=260, y=380, width=100, height=40)

# texte à coder
# Texte à coder
text_title = Label(bottom_frame, text='Données à coder :', bg="#CCCCCC")
text_title.place(x=30, y=0)
text = Entry(bottom_frame, width=122)
text.place(x=30, y=25)

# affichage du QRcode
# Affichage du QRcode
qrcode_img = ""
qrcode_label = Label(right_frame)
qrcode_label.config(image=qrcode_img, borderwidth=0)