J'ai voulu combiner un système de login / inscription à un générateur de mot de passe mais j'ai une erreur ligne 55 que je en comprends absolument pas, qi quelqu'un peut m'aider, merci d'avance. (PS: Ne jugez pas je débute et le generateur de mot de passe n'est pas forcément abouti c'était juste pour essayer)
from tkinter import *
import os
def Inscription_code():
nom_Inscription = Nominscription_entry.get()
pass_Inscription = Passinscription_entry.get()
File_inscription_name = os.listdir()
if str(nom_Inscription) + ".txt" in File_inscription_name :
print("Erreur 3 : Le nom d'utilisateur est déjà pris")
else :
File = open(str(nom_Inscription) + ".txt", "w")
File.write(str(nom_Inscription) + ":" + str(pass_Inscription))
File.close()
print("Message 2 : Votre compte a été créé avec succès.")
def Login_code():
nom_login = Nomlogin_entry.get()
pass_login = Passlogin_entry.get()
File_login_name = os.listdir()
if str(nom_login) + ".txt" in File_login_name :
File1 = open(str(nom_login) + ".txt", "r")
liste_info_login = File1.read().split(":")
File1.close()
if pass_login == liste_info_login[1] :
print("Message 1 : Bienvenue, votre nom et votre mot de passe sont justes")
from random import randint, choice
import string
def generate_password() :
password_min = 8
password_max = 12
all_chars = string.ascii_letters + string.punctuation + string.digits
password = "".join(choice(all_chars) for x in range(randint(password_min, password_max)))
password_entry.delete(0, END)
password_entry.insert(0, password)
def reset_gen() :
password_entry.delete(0, END)
# creer la fenetre
window = Tk()
window.title("Générateur de mot de passe")
window.geometry("720x480")
window.iconbitmap("logo.ico")
window.config(background='#4065A4')
# creer frame
frame = Frame(window, bg='#4065A4')
# creation d'image
width = 300
height = 300
image = PhotoImage(file="privacy.png").zoom(15).subsample(32)
canvas = Canvas(frame, width=width, height=height, bg='#4065A4', bd=0, highlightthickness=0)
canvas.create_image(width/2, height/2, image=image)
canvas.grid(row=0, column=0, sticky=W)
# creer une sous boite
right_frame = Frame(frame, bg='#4065A4')
# creer un titre
label_title = Label(right_frame, text="Mot de passe", font=("Helvetica", 20), bg='#4065A4', fg='white')
label_title.pack()
# creer un champ
password_entry = Entry(right_frame, font=("Helvetica", 20), bg='#4065A4', fg='white')
password_entry.pack()
# creer un bouton
generate_password_button = Button(right_frame, text="Générer", font=("Helvetica", 20), bg='#4065A4',
fg='white', command=generate_password)
generate_password_button.pack(fill=X)
# on place la sous boite a droite de la frame principale
right_frame.grid(row=0, column=1, sticky=W)
# afficher la frame
frame.pack(expand=YES)
# creation d'une barre de menu
menu_bar = Menu(window)
# creer un premier menu
file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Nouveau", command=generate_password)
file_menu.add_command(label="Quitter", command=window.quit)
file_menu.add_command(label="Reset", command=reset_gen)
menu_bar.add_cascade(label="Fichier", menu=file_menu)
# configurer la fenetre pour ajouter la menu bar
window.config(menu=menu_bar)
# afficher la fenetre
window.mainloop()
else :
print("Erreur 2 : Le mot de passe est incorrect")
else :
print("Erreur 1 : L'identifiant n'existe pas")
def login_window_open():
Login_window = Tk()
Login_window.title("Login")
Login_window.geometry("470x400")
Login_window.minsize(470,400)
Login_window.maxsize(470,400)
Login_window.config(background='#282882')
Login_frame = Frame(Login_window, bg="#6D6DE3")
Nom = Label(Login_frame, text="Nom :", font=("Arial", 20), width=15, height=1, bg="#6D6DE3", fg='black')
Nom.grid(row=0, column=0)
global Nomlogin_entry
Nomlogin_entry = Entry(Login_frame, font=("Arial", 18), bg='white', fg='black', width=25)
Nomlogin_entry.grid(row=0, column=1)
Space = Label(Login_frame, text="", bg="#6D6DE3", height=1)
Space.grid(row=1, column=0)
Pass = Label(Login_frame, text="Mot de passe :", font=("Arial", 20), width=15, height=1, bg="#6D6DE3", fg='black')
Pass.grid(row=2, column=0)
global Passlogin_entry
Passlogin_entry = Entry(Login_frame, font=("Arial", 18), bg='white', fg='black', width=25)
Passlogin_entry.grid(row=2, column=1)
Space = Label(Login_frame, text="", bg="#6D6DE3", height=1)
Space.grid(row=4, column=0)
Login_button = Button(Login_frame, text="Login", font=("Arail", 18), bg='white', fg='black', command=Login_code)
Login_button.grid(row=4, column=1)
Login_frame.pack(expand=YES)
Login_window.mainloop()
def inscription_window_open() :
Inscription_window = Tk()
Inscription_window.title("Inscription")
Inscription_window.geometry("470x400")
Inscription_window.minsize(470, 400)
Inscription_window.maxsize(470, 400)
Inscription_window.config(background='#282882')
Inscription_frame = Frame(Inscription_window, bg="#6D6DE3")
Nom = Label(Inscription_frame, text="Nom :", font=("Arial", 20), width=15, height=1, bg="#6D6DE3", fg='black')
Nom.grid(row=0, column=0)
global Nominscription_entry
Nominscription_entry = Entry(Inscription_frame, font=("Arial", 18), bg='white', fg='black', width=25)
Nominscription_entry.grid(row=0, column=1)
Space = Label(Inscription_frame, text="", bg="#6D6DE3", height=1)
Space.grid(row=1, column=0)
Pass = Label(Inscription_frame, text="Mot de passe :", font=("Arial", 20), width=15, height=1, bg="#6D6DE3", fg='black')
Pass.grid(row=2, column=0)
global Passinscription_entry
Passinscription_entry = Entry(Inscription_frame, font=("Arial", 18), bg='white', fg='black', width=25)
Passinscription_entry.grid(row=2, column=1)
Space = Label(Inscription_frame, text="", bg="#6D6DE3", height=1)
Space.grid(row=4, column=0)
Inscription_button = Button(Inscription_frame, text="Inscription", font=("Arail", 18), bg='white', fg='black', command=Inscription_code)
Inscription_button.grid(row=4, column=1)
Inscription_frame.pack(expand=YES)
Inscription_window.mainloop()
Menu_window = Tk()
Menu_window.title("Menu :")
Menu_window.geometry("350x175")
Menu_window.minsize(350,175)
Menu_window.maxsize(350,175)
Menu_window.config(background="#007082")
Menu_frame = Frame(Menu_window,width=310,height=135, bg='black')
Login_button = Button(Menu_frame, text="Login", font=("Arial", 20), bg='white', fg='black', width=8, height=3, command=login_window_open)
Login_button.grid(row=0, column=0)
inscription_button = Button(Menu_frame, text="Inscription", font=("Arial", 20), bg='white', fg='black', width=8, height=3, command=inscription_window_open)
inscription_button.grid(row=0, column=1)
Menu_frame.pack(expand=YES)
Menu_window.mainloop()
Vous ne donnez pas le message d'erreur et on ne peut pas essayer vraiment votre programme puisque vous ne fournissez pas les images. J'ai cru que ça venait de zoom et subsample ligne 53 mais en fait non, voir peut-être cette discussion, je ne serais pas étonné que ce soi à cause du fait que vous ayez trois ou quatre mainloop dans votre programme, ce n'est absolument pas recommandé (mps avait donné un exemple récemment mais je ne trouve plus le lien), à moins que vous sachiez ce que vous faites, utilisez plutôt toplevel si vous voulez du multifenêtrage.
Vous ne donnez pas le message d'erreur et on ne peut pas essayer vraiment votre programme puisque vous ne fournissez pas les images. J'ai cru que ça venait de zoom et subsample ligne 53 mais en fait non, voir peut-être cette discussion, je ne serais pas étonné que ce soi à cause du fait que vous ayez trois ou quatre mainloop dans votre programme, ce n'est absolument pas recommandé (mps avait donné un exemple récemment mais je ne trouve plus le lien), à moins que vous sachiez ce que vous faites, utilisez plutôt toplevel si vous voulez du multifenêtrage.
D'accord je vais retirer les mainloop et voici l'erreur :
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\theod\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\theod\login_project\main.py", line 57, in Login_code
D'accord je vais retirer les mainloop et voici l'erreur :
Exception in Tkinter callback
Traceback (most recent call last):
...
_tkinter.TclError: image "pyimage3" doesn't exist
Il faudrait donner le nouveau code. Quand je dis retirer les mainloop, je me suis mal exprimé, ce que je veux dire c'est que vous devez essayer de n'écrire qu'un seul appel à Tk sur le résultat duquel vous brancherez l'unique mainloop, les autres fenêtres étant obtenues via Toplevel. Et sinon, vous avez essayé la solution proposée par le message de SO ?
mais, un seul Tk, des Toplevel et un seul appel à mainloop restent la base et vous allez avoir d'autres soucis à utiliser des constructions avancés sans trop savoir pourquoi.
D'accord je vais retirer les mainloop et voici l'erreur :
Exception in Tkinter callback
Traceback (most recent call last):
...
_tkinter.TclError: image "pyimage3" doesn't exist
Il faudrait donner le nouveau code. Quand je dis retirer les mainloop, je me suis mal exprimé, ce que je veux dire c'est que vous devez essayer de n'écrire qu'un seul appel à Tk sur le résultat duquel vous brancherez l'unique mainloop, les autres fenêtres étant obtenues via Toplevel. Et sinon, vous avez essayé la solution proposée par le message de SO ?
Désolé mais je suis débutant et je ne sais absolument pas ce qu'est Toplevel
ps: si vous voulez abandonner avec moi, aucun problème
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères