You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Tkinter Entry内容随密码生成更新?解决点击叠加问题

Tkinter密码生成器:解决重复叠加问题

你的代码有两个核心问题导致密码叠加:

  1. 全局的heslo列表每次点击按钮都会追加新字符,没有重置
  2. 向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:18:14