Проверка пароля на надежность
Помогите разработать код проверки надежности пароля через Tkinter. Постоянно выдает ошибку
from tkinter import *.
from tkinter import messagebox
root = Tk()
root.title("Проверка пароля")
root.geometry("400x150")
frame = Frame(
root,
padx=10,
pady=10
)
frame = Frame(master=root, relief=SUNKEN, borderwidth=5)
frame.pack(expand=True)
password_lbl = Label(
frame,
text='Введите интересующий пароль'
)
password_lbl.grid(row=3, column=1, pady=10)
password_ent = Entry(
frame
)
password_ent.grid(row=3, column=2)
password_ent.focus()
def check(password):
number = '1234567890'
upper_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lower_letters = 'abcdefghijklmnopqrstuvwxyz'
symbols = '!*._'
acceptable = number + upper_letters + lower_letters + symbols
passwd = set(password)
if any(char not in acceptable for char in passwd):
messagebox.showerror('Информация', f'Пароль {password} неверен.')
else:
messagebox.showinfo('Информация', f'Пароль {password} верен.')
proverka_Btn = Button(frame, text="Проверить", command=check)
proverka_Btn.grid(row=5, column=2)
root.mainloop()
Ответы (1 шт):
Не совсем понимаю, что Вы хотите сделать. Единственная ошибка, которую мне вывело TypeError: check() missing 1 required positional argument: 'password'
показывает на то, что у Вас в строке proverka_Btn = Button(frame, text="Проверить", command=check)
вызов функции без аргументов. Решается с помощью лямбды. Но проблема в самом коде:
Что вы пытаетесь передать тут как аргумент? - def check(password):
Вы получаете пароль из своего Entry
с помощью метода .get()
:
def check():
number = '1234567890'
upper_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lower_letters = 'abcdefghijklmnopqrstuvwxyz'
symbols = '!*._'
acceptable = number + upper_letters + lower_letters + symbols
password = password_ent.get()
if any(char not in acceptable for char in password):
messagebox.showerror('Информация', f'Пароль {password} неверен.')
else:
messagebox.showinfo('Информация', f'Пароль {password} верен.')
proverka_Btn = Button(frame, text="Проверить", command=check)
proverka_Btn.grid(row=5, column=2)
И Вы будете получать пароль, который ввел пользователь, без ошибок.
P.s: from tkinter import *
так лучше не делать, вместо этого можно писать import tkinter as tk
и выводить методы Tkinter через tk(Пример: root = tk.Tk()
)