wxPython开发之密码管理程序
不想记密码?密码全设置成一样担心安全?用别人程序担心密码泄露?看完本博客,开发一个属于自己的密码管理程序吧
我们用到的是python的wxPython界面库包
先来看下成果界面:简洁主题明确

要想开发wxPython需要先下载对应包,打开cmd执行下列代码
pip install -U wxPython
进入IDE进行开发,代码如下,可以直接运行查看
import wx
import os class My(wx.Frame): def __init__(self, parent, title):
super(My, self).__init__(parent, title=title, size=(600, 400))
panel = wx.Panel(self) self.searchCtrl = wx.TextCtrl(panel, pos=(150, 10), size=(300, 30), style=wx.TE_CENTER)
self.search = wx.Button(panel, label="查找", pos=(460, 12))
self.search.Bind(wx.EVT_BUTTON, self.findAccount) self.label1 = wx.StaticText(panel, label="所属", pos=(40, 80))
self.belong = wx.TextCtrl(panel, pos=(90, 76), size=(400, 30), style=wx.TE_LEFT) self.label2 = wx.StaticText(panel, label="账号", pos=(40, 140))
self.account = wx.TextCtrl(panel, pos=(90, 136), size=(400, 30), style=wx.TE_LEFT) self.label3 = wx.StaticText(panel, label="密码", pos=(40, 200))
self.password = wx.TextCtrl(panel, pos=(90, 196), size=(400, 30), style=wx.TE_LEFT) self.save = wx.Button(panel, label="保存", pos=(90, 266), size=(80, 30))
self.save.Bind(wx.EVT_BUTTON, self.saveClicked) self.reset = wx.Button(panel, label="刷新", pos=(250, 266), size=(80, 30))
self.reset.Bind(wx.EVT_BUTTON, self.clearClick) self.Centre()
self.Show()
self.Fit() # 保存文本
def saveClicked(self, event):
belong = self.belong.GetValue()
account = self.account.GetValue()
password = self.password.GetValue()
if belong == "":
digLog("所属不能为空", "错误信息提示")
elif account == "":
digLog("账号不能为空", "错误信息提示")
elif password == "":
digLog("密码不能为空", "错误信息提示")
else:
result = alike(self.belong.GetValue())
if result:
digLog("该所属已存在", "失败信息提示")
return
text = belong + "/" + account + "/" + password
with open(os.getcwd() + "\pass.txt", 'a+', encoding='utf-8') as f:
f.write("\n" + text)
digLog("保存成功", "成功信息提示")
self.save.Enable(False) # 刷新
def clearClick(self, event):
self.searchCtrl.Clear()
self.belong.Clear()
self.account.Clear()
self.password.Clear()
self.save.Enable(True) # 读取文本
def findAccount(self, event):
target = self.searchCtrl.GetValue()
if target == "":
digLog("输入框不能为空", "失败信息提示")
return
with open(os.getcwd() + "\pass.txt", 'a+', encoding='utf-8') as f: # 从TXT文件中读出数据
for line1 in f:
if target in line1.split("/")[0]: # 是否包含文字
self.belong.SetValue(line1.split("/")[0])
self.account.SetValue(line1.split("/")[1])
self.password.SetValue(line1.split("/")[2])
digLog("查找成功", "成功信息提示")
self.save.Enable(False)
return
digLog("未查到", "失败信息提示")
return # 判断添加的账号是否存在
def alike(exist):
with open(os.getcwd() + "\pass.txt", 'a+', encoding='utf-8') as foo:
for line in foo.readlines():
if exist in line.split("/")[0]:
return True
else:
return False def digLog(msg, title):
toastone = wx.MessageDialog(None, msg, title, wx.YES_DEFAULT | wx.ICON_QUESTION)
if toastone.ShowModal() == wx.ID_YES: # 如果点击了提示框的确定按钮
toastone.Destroy() # 则关闭提示框 app = wx.App()
My(None, "保存密码程序")
app.MainLoop()
测试没问题后进行打包exe程序
打包需要用到一个库,强烈建议使用 pip 在线安装的方式来安装 PyInstaller 模块,不要使用离线包的方式来安装,因为 PyInstaller 模块还依赖其他模块,pip 在安装 PyInstaller 模块时会先安装它的依赖模块。
pip install pyinstaller
完成后进行打包,进入程序文件目录,打开cmd
执行下列命令 (-F是在dist只生成exe文件 -w是取消程序启动的命令框,-n是指定程序名,-i是指定程序图标 )
pyinstaller -F -w -n savePW -i .\ico.ico index.py

成功如下:

生成的文件在程序文件的dist目录下,告别繁琐的密码文件吧
wxPython开发之密码管理程序的更多相关文章
- 自己开发Thinkpad电源管理程序
自己开发Thinkpad电源管理程序 - 知乎 https://zhuanlan.zhihu.com/p/20706403
- FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码
之前我们分享了FastAPI(六十八)实战开发<在线课程学习系统>接口开发--用户 个人信息接口开发.这次我们去分享实战开发<在线课程学习系统>接口开发--修改密码 我们梳理一 ...
- django 开发忘记密码通过邮箱找回功能
一.流程分析: 1.点击忘记密码====>forget.html页面,输入邮箱和验证码,发送验证链接网址的邮件====>发送成功,跳到send_success.html提示 2.到邮箱里找 ...
- Taro开发写密码支付弹层
在支付的时候弹出填写密码,模仿了支付宝支付填写密码.主要是利用遮罩的来实现.直接上代码吧. html设计,通过标记控制显示. { showPayPwdInput ? <View classNam ...
- UliPad ----python 开发利器
安装wxPython ...
- UliPad 初体验----python 开发利器
学习python 有段时间,最近博客更新比较慢了,空闲时间在零零碎碎的学python ,难成文,也就没整理成博客. 学习python 最苦恼的就是没有趁手IDE ,之前学java 时 Eclipse ...
- Python GUI开发环境的搭建
原文:Python GUI开发环境的搭建 最近对Python的开发又来了兴趣,对于Python的开发一直停留在一个表面层的认识,玩的部分比较大. Python的入手简单,语法让人爱不释手,在网络通信方 ...
- python 开发利器
UliPad 初体验----python 开发利器 Posted on 2013-10-28 22:36 虫师 阅读(436) 评论(3) 编辑 收藏 学习python 有段时间,最近博客更新比较慢了 ...
- wxpython分割窗研究(解决sashPosition=0无效的BUG)
用wxpython开发一个简单的exe其实很简单的,但是在开发的过程中会遇到若干的坑.疑问.甚至bug,让人摸不清头脑!恰恰关于这方面的文档是少之又少,看来看去大家还是在官方的文档上加以引用说明,但是 ...
随机推荐
- 安装电脑思考到了Java设计模式:建造者模式
目录 定义 意图 主要解决问题 何时使用 优缺点 结构 组装电脑的例子 定义 建造者模式是对象的创建型模式,可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表 ...
- nginx+nginx-upsync-module实现配置动态更新
模块微博开源:https://github.com/weibocom/nginx-upsync-module#upsync 实现方案: nginx+consul nginx+etcd Installa ...
- 通读《构建之法》与CI/CD工具尝试
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 作业要求 我在这个课程的目标是 积累软件开发经验,提高工程能力 这个作业在哪个具体方面帮助我实现目标 通读课 ...
- OAuth 2.0 了解了,OAuth 2.1 呢?
OAuth 2.0 OAuth 2.0 是工业级标准授权协议. OAuth 2.0 聚焦于客户端开发者便利性,为网页应用程序.桌面客户端.手机.客厅设备提供特定的授权流程. RFC6749 OAuth ...
- 集群,lvs负载均衡的四种工作模式
集群 集群的三种分类以及用途 负载均衡: 分配流量(调度器),提升速度 高可用: 关键性业务 高性能: 开发算法,天气预报,国家安全 负载均衡的集群 lvs(适用于大规模) haproxy(适用于中型 ...
- hdu5025 状态压缩广搜
题意: 悟空要救唐僧,中途有最多就把钥匙,和最多五条蛇,要求就得唐僧并且拿到所有种类的钥匙(两个1只拿一个就行),拿钥匙i之前必须拿到钥匙i-1,打蛇多花费一秒,问救出唐僧并且拿到所有种类 ...
- [CTF]思维导向图
[CTF]思维导向图 ---------------来自大佬的CTF思维导向图 Angel_Kitty https://www.cnblogs.com/ECJTUACM-873284962/ 给信息安 ...
- 深入浅出带你玩转sqlilabs(二)
MYSQL高权限注入 mysql跨库注入 详情请看上一篇:深入浅出带你玩转sqlilabs(一) mysql文件操作注入-sqlilabs less7 可能用到的函数: into outfile()函 ...
- 每天一道面试题LeetCode 80--删除排序数组中的重复项 II(python实现)
LeetCode 80--删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输 ...
- 【c#】 使用Directory.GetFiles获取局域网中任意电脑指定文件夹下的文件
本文为老魏原创,如需转载请留言 格式如下: // 获取IP地址为10.172.10.167下D盘下railway下的所有文件 string[] picArray = Directory.GetFile ...