window下输入长度,生成随机密码

password_random.py

import tkinter as tk
import random
import string
 
def generate_password(length):
      if length < 4:
         raise ValueError("Password length must be at least 4 characters to include all character types.")

    # 定义字符集合
    digits = string.digits
    lower_case = string.ascii_lowercase
    upper_case = string.ascii_uppercase
    special_chars = string.punctuation

    # 确保密码至少包含每种类型的一个字符
    password = [
        random.choice(digits),
        random.choice(lower_case),
        random.choice(upper_case),
        random.choice(special_chars)
    ]

    # 剩余长度的随机选择字符
    all_chars = digits + lower_case + upper_case + special_chars
    password += random.choices(all_chars, k=length-4)

    # 打乱密码字符
    random.shuffle(password)

    return ''.join(password)
 
def generate_callback():
    # 获取密码长度
    password_length = int(password_length_var.get())
    # 生成密码
    password = generate_password(password_length)
    # 将密码显示在编辑框中
    password_edit.delete(0, tk.END)
    password_edit.insert(0, password)
 
# 创建主窗口
root = tk.Tk()
root.title("生成随机密码")
 
# 创建标签和输入框
password_length_label = tk.Label(root, text="请输入要生成的密码长度:")
password_length_label.grid(row=0, column=0, padx=5, pady=5)
password_length_var = tk.StringVar()
password_length_edit = tk.Entry(root, textvariable=password_length_var)
password_length_edit.grid(row=0, column=1, padx=5, pady=5)
 
# 创建生成按钮
generate_button = tk.Button(root, text="生成密码", command=generate_callback)
generate_button.grid(row=1, column=0, padx=5, pady=5)
 
# 创建密码输出框,显示密码
password_edit_label = tk.Label(root, text="生成密码:")
password_edit_label.grid(row=2, column=0, padx=5, pady=5)
password_edit = tk.Entry(root)
password_edit.grid(row=2, column=1, padx=5, pady=5)
 
# 进入主事件循环
root.mainloop()
 

最终生成效果

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值