from tkinter import *
import random
def check():
en.delete(0,END)
letters = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
signs = '@#$%^&*!<>'
digits = '1234567890'
if pw.get() == random.choice(digits) + random.choice(letters) + random.choice(signs):
strong = 'Very good password'
strength.set(strong)
elif pw.get() == random.choice(digits) + random.choice(letters):
med = 'Medium password strength'
strength.set(med)
elif pw.get() == random.choice(digits):
weak = 'Password too weak! Use another one'
strength.set(weak)
elif len(pw.get()) < 8:
tooweak = 'Password not acceptable!'
strength.set(tooweak)
win = Tk()
win.title('Password Generator')
lb = Label(win,text='Create a password')
lb.pack(pady=10)
pw = StringVar()
en = Entry(win,textvariable=pw)
en.pack(pady=10)
btn = Button(win,text='Create',command=check)
btn.pack(pady=10)
strength = StringVar()
lbstr = Label(win,textvariable=strength)
lbstr.pack(pady=10)
В этой программе нет ошибки. Однако, когда я запускаю и использую операторы if внутри def check():
, метки не могут отображаться, если я использую пароли, удовлетворяющие условиям в strength.set(strong)
, strength.set(med)
и strength.set(weak)
. Могу я спросить, можно ли использовать метод set для изменения текста метки? Также могу я спросить, правильно ли я ставлю random.choice(digits) + random.choice(letters) + random.choice(signs)
, если я хочу, чтобы пароль содержал цифры, буквы и знаки внутри записи? По этому вопросу я уже решил проблему, выполнив исследования. Если я снова столкнусь с той же проблемой, я хорошо систематизирую свой сценарий и проверю написание и правильность используемых методов. Прежде чем задавать новые вопросы, я сначала постараюсь изо всех сил и прошу только необходимое.