почему ярлык не работает? Это для цикла for?

На этикетке не отображается пароль, что мне делать? Где не так? Это для цикла 'for'? Я думаю, это для новой строки цикла for Извините за мой плохой английский

      from tkinter import *
from tkinter import ttk
import random
window = Tk()
window.resizable(False , False)
window.title('Password Generator')
window.geometry('400x200')
len = IntVar()
lbl = StringVar()
var1 = StringVar()
Alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
showpass = ttk.Label(window , textvariable = lbl).pack()
def randalp():
        for i in range(len):
                random.choice(Alphabet)
ttk.Label(window , text = 'Password Lentgh:').pack()
numchoosen = ttk.Combobox(window, width = 12 , textvariable = len)
numchoosen['values'] = (5,6,7,8,9,10)
numchoosen.pack()
numchoosen.current(2)
numchoosen.config(state = 'readonly')
rad1 = ttk.Checkbutton(window , text = 'Alphabet' , variable = var1).pack()
def btnclick():
        get1 = var1.get()
        if rad1 == '1':
                lbl.set(randalp)
btn = ttk.Button(window , text = 'Generate' , command = btnclick).pack()
window.mainloop()

1 ответ

Исправит ли это для вас:

Сначала вам нужно немного изменить свою функцию:

      def randalp():
    string = list(Alphabet)
    random.shuffle(string)
    return string[:5]

я использовал shuffle потому что он просто перемешивает список в случайном порядке, поэтому выбор первых 5 элементов из этого списка будет случайным.

Также изменилась функция btnclick ():

      def btnclick():
    get1 = var1.get()
    if get1 == '1':
        lbl.set(randalp())

поэтому теперь он использует возвращаемое значение randalp()

Также вы должны исправить несколько проблем с форматированием вашего кода: предложение: следуйте PEP 8, потому что это упрощает чтение кода и не использует встроенные имена функций (например, len) как имена переменных; это довольно плохая практика.

Другие вопросы по тегам