Проверка пароля на надежность

Помогите разработать код проверки надежности пароля через 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 шт):

Автор решения: Donovan

Не совсем понимаю, что Вы хотите сделать. Единственная ошибка, которую мне вывело 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())

→ Ссылка