Le programme me dit invalid syntax

Résolu
Bonjour,

Le programme me dit invalid syntax mais je ne trouve pas l'erreur. Pouvez-vous me corriger l'erreur ?

Merci beaucoup de votre réponse !

import string
from random import randint, choice
#importer le module tkinter
from tkinter import*

# créer la page
fenetre = Tk()



def generate_password():
    password_min = 8
    password_max = 16
    all_chars = string.aascii_letters = string.punctuation = string.digits

    password ="".join(choice(all_chars) for x in range(randint(password_min, password_max)))
    entree.delete(0,END)
    entree.insert(0, password)


#personnalisation de la fenetre
fenetre.title("Generateur et crypteur de mots de passes")
fenetre.geometry("1600x900")
fenetre.iconbitmap("mot-de-passe.ico")
fenetre.config(background="#AEB404")

#creer la boite
boite = Frame(fenetre, bg="#AEB404")

#mettre du texte
titre_un = Label(boite, text='Bienvenue sur le générateur et crypteur de mots de passes', font=("Arial", 40), bg="#AEB404")
titre_un.pack()


#mettre un second texte
soustitre_un = Label(boite, text='Cliquez ci dessous pour générer un mots de passe', font=("Arial", 30), bg="#AEB404")
soustitre_un.pack()


#ajouter une image
largeur = 250
hauteur = 250
image = PhotoImage(file="mot-de-passe (1).png").zoom(15).subsample(32)
canvas = Canvas(boite, width=largeur, height=hauteur, bg="#AEB404", bd=0)
canvas.create_image(largeur/2, hauteur/2, image=image)
canvas.pack(expand=YES)


#ajouet un premier bouton
bouton = Button(boite, text="Generer un mots de passe", font=("Arial",25), bg="#F9815E", fg="blue", command=generate_password())
bouton.pack()

#mettre un champ d'entrée
entree = Entry(boite, font=("Arial", 30), bg="#AEB404")
entree.pack()


#ajouet un deuxieme bouton
sauvgarder = Button(boite, text="Sauvgarder le mots de passe", font=("Arial",25), bg="#F9815E", fg="blue")
sauvgarder.pack()


    

#afficher la boite
boite.pack(side=TOP)


#Afficher la page
fenetre.mainloop()

4 réponses

  1. Contributeur
    bonjour,
    peux-tu donner le texte complet du message d'erreur?
    1. Bonjour,

      Invalid syntax ligne 14 surement ...
      1. Contributeur
        chez moi la ligne 14 passe sans problème.
      2. @yg_beah bon ?

        même avec ascii écrit avec 2 a ?

        all_chars = string.aascii_letters
      3. Contributeur
        @Phil_1857oui, grâce à la suite de l'instruction.
      4. @yg_beah ?

        on peut écrire ascii avec 2 a?
      5. Contributeur
        @Phil_1857
        import string
        x = string.phil = "y"
        print(string.phil)
    2. Modérateur
      Bonjour,

      Après remise en forme (indentation, typo, et ajout du paramètre
      entree
      à
      generate_password
      + déplacement de la déclaration de
      entree
      ) voici à quoi ça pourrait ressembler (j'ai commenté les instructions avec les images car tu ne les as pas fournies) :

      #!/usr/bin/env python3
      # -*- coding: utf-8 -*-
      
      import string
      from random import randint, choice
      from tkinter import *
      
      # Créer la page
      fenetre = Tk()
      
      def generate_password(entree):
          password_min = 8
          password_max = 16
          all_chars = string.ascii_letters = string.punctuation = string.digits
          password = "".join(
              choice(all_chars)
              for x in range(randint(password_min, password_max))
          )
          entree.delete(0,END)
          entree.insert(0, password)
      
      # Personnalisation de la fenêtre
      fenetre.title("Générateur et crypteur de mots de passes")
      fenetre.geometry("1600x900")
      #fenetre.iconbitmap("mot-de-passe.ico")
      fenetre.config(background="#AEB404")
      
      # Créer la boite
      boite = Frame(fenetre, bg="#AEB404")
      
      # Mettre du texte
      titre_un = Label(
          boite,
          text="Bienvenue sur le générateur et crypteur de mot de passes",
          font=("Arial", 40),
          bg="#AEB404"
      )
      titre_un.pack()
      
      # Mettre un second texte
      soustitre_un = Label(
          boite,
          text="Cliquez ci-dessous pour générer un mot de passe",
          font=("Arial", 30),
          bg="#AEB404"
      )
      soustitre_un.pack()
      
      # Ajouter une image
      largeur = 250
      hauteur = 250
      #image = PhotoImage(file="mot-de-passe (1).png").zoom(15).subsample(32)
      canvas = Canvas(boite, width=largeur, height=hauteur, bg="#AEB404", bd=0)
      #canvas.create_image(largeur / 2, hauteur / 2, image=image)
      canvas.pack(expand=YES)
      
      # Mettre un champ d'entrée
      entree = Entry(boite, font=("Arial", 30), bg="#AEB404")
      entree.pack()
      
      # Ajouter un premier bouton
      bouton = Button(
          boite,
          text="Générer un mot de passe",
          font=("Arial", 25),
          bg="#F9815E",
          fg="blue",
          command=generate_password(entree)
      )
      bouton.pack()
      
      # Ajouter un deuxième bouton
      sauvegarder = Button(
          boite,
          text="Sauvegarder le mots de passe",
          font=("Arial", 25),
          bg="#F9815E",
          fg="blue"
      )
      sauvegarder.pack()
      
      # Afficher la boite
      boite.pack(side=TOP)
      
      # Afficher la page
      fenetre.mainloop()


      Ceci dit, même si la ligne
      all_chars = string.ascii_letters = string.punctuation = string.digits
      est syntaxiquement correcte, je doute qu'elle fasse ce que tu as prévu. Peut-être voulais-tu plutôt écrire :

      all_chars = set(string.ascii_letters) | set(string.punctuation) | set(string.digits)


      Bonne chance