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()
最终生成效果