为什么标签不起作用?是 'for' 循环吗?
why label doesnt work?Is it for 'for' loop?
单击生成按钮后,此应用程序中的标签不显示密码。我认为它可能来自“for”循环。任何帮助将不胜感激。
from tkinter import *
from tkinter import ttk
import random
window = Tk()
window.resizable(False , False)
window.title('Password Generator')
window.geometry('400x200')
length = IntVar()
lbl = StringVar()
var1 = StringVar()
Alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
showpass = ttk.Label(window , textvariable = lbl).pack()
def randalp():
for i in range(length):
random.choice(Alphabet)
ttk.Label(window , text = 'Password Lentgh:').pack()
numchoosen = ttk.Combobox(window, width = 12 , textvariable = length)
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)
print(lbl)
btn = ttk.Button(window , text = 'Generate' , command = btnclick).pack()
window.mainloop()
这是否为您解决了问题:
首先你必须稍微改变你的randalp()
功能:
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
)作为变量姓名;这是非常糟糕的做法。
单击生成按钮后,此应用程序中的标签不显示密码。我认为它可能来自“for”循环。任何帮助将不胜感激。
from tkinter import *
from tkinter import ttk
import random
window = Tk()
window.resizable(False , False)
window.title('Password Generator')
window.geometry('400x200')
length = IntVar()
lbl = StringVar()
var1 = StringVar()
Alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
showpass = ttk.Label(window , textvariable = lbl).pack()
def randalp():
for i in range(length):
random.choice(Alphabet)
ttk.Label(window , text = 'Password Lentgh:').pack()
numchoosen = ttk.Combobox(window, width = 12 , textvariable = length)
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)
print(lbl)
btn = ttk.Button(window , text = 'Generate' , command = btnclick).pack()
window.mainloop()
这是否为您解决了问题:
首先你必须稍微改变你的randalp()
功能:
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
)作为变量姓名;这是非常糟糕的做法。