python 随机密码生成器
成品链接:「自定义随机密码_GUI版.exe」https://www.aliyundrive.com/s/d45E7GdWkX9 提取码: 24iz
最近在研究PySimpleGUI库,把之前写的一个随机密码生成器改成GUI版本发出来,有兴趣的兄弟们可以拿走。
因为能力有限,目前只能写生成一个随机密码的Gui版本,等我学了更多的内容再慢慢完善。
核心代码很简单,界面也很粗陋。
如果你能写得更好,不要喷,直接回帖发出来让我参考下,谢谢。
from pyperclip import copy, paste
import PySimpleGUI as sg
import random
import string
def get_passwords(xiaoxie=True,
daxie=True,
shuzi=True,
biaodian=True,
zidingyi='',
changdu=11):
if not any([xiaoxie, daxie, shuzi, biaodian]): return '至少要勾选一种密码类型!'
words = zidingyi
if xiaoxie: words += string.ascii_lowercase #小写字母
if daxie: words += string.ascii_uppercase #大写字母
if shuzi: words += string.digits #数字
if biaodian: words += string.punctuation #标点
#规避样本数量 < 密码长度的问题
if len(words) <= changdu: words = words * (changdu // len(words) + 1)
return ''.join(random.sample(words, changdu))
def gui():
sg.theme('GrayGrayGray') # 设置当前主题
layout = [
[
sg.InputText(
key='密码',
justification='center',
# readonly=True,
text_color='#0000ff')
],
[
sg.Checkbox('小写a-z', default=True, key='小写'),
sg.Checkbox('大写A-Z', default=True, key='大写'),
sg.Checkbox('数字0-9', default=True, key='数字'),
sg.Checkbox('标点', default=True, key='标点'),
],
[sg.Text('自定义字'),
sg.InputText(key='自定义', size=(260, 15))],
[
sg.Text('密码长度'),
sg.Slider(
range=(5, 30),
default_value=10,
orientation='horizontal', #滑块方向
tick_interval=5, #显示的步长
enable_events=True,
size=(200, 18),
key='长度')
],
[
sg.Button('清空', key='清空'),
sg.Button(
'复制',
key='复制',
button_color='#118890',
),
sg.Checkbox('复制后退出', default=False, key='复制退出'),
sg.Text('', text_color='#0000ff', key='提示')
]
]
# 创建展示窗口
window = sg.Window('随机密码 - by wkdxz',
layout,
font=('宋体', 10),
size=(340, 175))
# 事件循环并获取输入值
while True:
event, values = window.read()
if not event:
break
if event == '长度':
window['密码'].update(
get_passwords(values['小写'], values['大写'], values['数字'],
values['标点'], values['自定义'], int(values['长度'])))
window['提示'].update('')
if values['密码']:
if event == '清空':
window['密码'].update('')
window['提示'].update('')
window['自定义'].update('')
if event == '复制':
copy(values['密码'])
window['提示'].update(' 密码已复制')
if values['复制退出']:
window.hide()
sg.popup(f'密码已复制:{paste()}',
font=('宋体', 10),
auto_close=True)
window.close()
window.close()
if __name__ == '__main__':
gui()
留言与评论(共有 0 条评论) |