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

Python Tkinter:如何实现点击按钮每次生成新密码?

问题修复:Tkinter密码生成器重复显示同一密码

问题根源

  • 你在程序启动时只调用了一次password_generator()生成密码,这个值存在全局变量password里,之后点击按钮完全没触发新的密码生成,所以每次显示的都是同一个初始密码。
  • 每次点击按钮都新建一个Label,界面会堆一堆重复的标签,这也是需要优化的点。

修复方案

  1. 每次点击按钮时,都重新调用password_generator()生成新密码,不用一开始生成好的全局变量。
  2. 提前创建一个空的Label,点击按钮时只更新这个Label的文本,避免界面元素重复叠加。

修复后的完整代码

from tkinter import *
import random
    
def password_generator():
    numbers = "1234567890"
    upper_case_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    lower_case_letters = "abcdefghijklmnopqrstuvwxyz"
    special_chars = "!@#$%^&*()[];:"
    
    password_length = random.randint(9, 15)
    
    combo = numbers + upper_case_letters + lower_case_letters + special_chars
    
    password = "".join(random.sample(combo, password_length))
    
    return password
    
    
def printSomething():
    # 每次点击都生成新密码
    new_password = password_generator()
    # 更新已有标签的文本
    password_label.config(text=new_password) 

window = Tk()
    
window.geometry("400x250")
window.title("Password Generator")
window.config(background = "black")

# 提前创建用于显示密码的标签,初始设为提示文本
password_label = Label(window, text="点击按钮生成密码", bg="black", fg="white", font=("", 16))
password_label.pack(pady=20)

button = Button(window, text = "Generate")
button.pack()
button.config(command = printSomething) 
button.config(font = ("", 50, "bold")) 
    
window.mainloop()

额外优化说明

  • 给密码标签加上白色字体和黑色背景,和窗口背景适配,避免文字看不见。
  • 初始标签设置提示文本,用户点击前能清楚操作逻辑。

内容的提问来源于stack exchange,提问作者Jasmit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:16:04