python源码
import random
import re
import tkinter as tk
a = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ!@#%&*()<>{}+?123456789'
def generate(n): #n表示密码位
s = 0
ddtt = "" # 初始化 ddtt 变量
while s == 0:
ddtt = [] # 创建一个空列表
for i in range(n): # 循环n次
rand = random.randint(0, len(a)-1) # 生成随机数
ddtt.append(a[rand]) # 将随机数添加到列表中
ddtt = "".join(ddtt) # 将列表转换为字符串
if re.search(r'[a-z]', ddtt): # 判断字符串中是否包含小写字母
if re.search(r'[A-Z]', ddtt): # 判断字符串中是否包含大写字母
if re.search(r'[0-9]', ddtt): # 判断字符串中是否包含数字
if re.search(r'[!@#%&*()<>{}+?]', ddtt): # 判断字符串中是否包含特殊字符
s = 1 # 满足条件,跳出循环
return ddtt # 返回生成字符串
def create_window():
"""创建一个带有两个文本框的简单GUI窗口"""
# 创建主窗口
window = tk.Tk()
window.title("随机密码生成")
# 设置窗口大小
window.geometry("220x250") # 宽x高 (像素)
# 添加输入文本标签
input_label = tk.Label(window, text="生成几位数:")
input_label.pack(pady=5) # 增加上下内边距
# 创建输入文本框
input_entry = tk.Entry(window)
input_entry.insert(0, "8")
input_entry.pack(pady=5) # 增加上下内边距
# 添加显示长度标签
length_label = tk.Label(window, text="随机密码生成:")
length_label.pack(pady=5) # 增加上下内边距
# 创建一个框架来放置显示长度文本框和复制按钮
frame = tk.Frame(window)
frame.pack(pady=5)
# 创建显示长度文本框,初始值为空
length_entry = tk.Entry(frame)
length_entry.pack(pady=5) # 增加上下内边距
def copy_text():
text_to_copy = length_entry.get() # 获取要复制的文本内容
window.clipboard_clear() # 清空剪贴板内容
window.clipboard_append(text_to_copy) # 将文本内容添加到剪贴板
# 创建一个按钮
button_1 = tk.Button(frame, text="复制", command=copy_text)
button_1.pack(pady=5) # 增加上下内边距
# 定义按钮点击事件的处理函数
def update_length():
input_text = input_entry.get() # 获取输入文本
num = generate(int(input_text)) # 调用generate函数
length_entry.delete(0, tk.END) # 清空长度文本框
length_entry.insert(0, str(num)) # 将生成的密码插入到长度文本框中
# 创建一个按钮
button = tk.Button(window, text="更新密码", command=update_length)
button.pack(pady=10) # 增加上下内边距
window.bind(lambda event: button.invoke()) # 绑定回车键触发按钮
# 运行主事件循环
window.mainloop()
if __name__ == "__main__":
create_window()