如何让Tkinter Entry内容随密码生成更新?解决点击叠加问题
Tkinter密码生成器:解决重复叠加问题
你的代码有两个核心问题导致密码叠加:
- 全局的
heslo列表每次点击按钮都会追加新字符,没有重置 - 向
vysledek输入框插入新密码时,没有先清空原有内容
以下是修复后的完整代码:
from tkinter import * import string import random cisla = string.digits symboly = string.punctuation abeceda = string.ascii_letters root = Tk() root.title("PASSWORD GENERATOR") delkahesla = Entry(root, width=35) delkahesla.insert(0, "How many letters would you like?") Psymboly = Entry(root, width=35) Psymboly.insert(0, "How many symbols would you like?") Pcisla = Entry(root, width=35) Pcisla.insert(0, "How many numbers would you like?") def kliknuti(): # 每次生成时重新创建列表,避免全局累积 heslo = [] x = int(delkahesla.get()) y = int(Psymboly.get()) z = int(Pcisla.get()) for i in range(x): heslo.append(random.choice(abeceda)) for i in range(y): heslo.append(random.choice(symboly)) for i in range(z): heslo.append(random.choice(cisla)) random.shuffle(heslo) STRheslo = ' '.join(heslo) # 先清空输入框旧内容,再插入新密码 vysledek.delete(0, END) vysledek.insert(0, STRheslo) vysledek = Entry(root, width=35) napis = Label(root, text="nastaveni") tlacitko = Button(root, text="Generuj!", command=kliknuti, fg="black", bg="cyan") napis.pack() tlacitko.pack() delkahesla.pack() Psymboly.pack() Pcisla.pack() vysledek.pack() root.mainloop()
关键修改说明
- 重置密码列表:把
heslo = []从全局移到kliknuti函数内部,每次点击按钮都会重新创建空列表,不会累积之前的字符 - 清空输入框:在插入新密码前,调用
vysledek.delete(0, END)删除输入框中从开头到结尾的所有内容,确保新密码完全替换旧内容
内容的提问来源于stack exchange,提问作者Ondřej
相关产品推荐
相关产品推荐

