卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11201本站已运行3223

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()
卓越飞翔博客
上一篇: 【Python】turtle绘制光路图(高中物理几何光学)
下一篇: [Python] Python倒计时自动发微信(电脑版微信)
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏