Python+Tkinter 密保小工具

简介: 上图代码核心编解码方面Tkinter界面更新总结昨天被一同学告知,网上的一个QQ密码库中有我的一条记录,当时我就震惊了,赶紧换了密码。当然了,这件事也给了我一个警示,那就是定期的更换自己的QQ密码,会比较的安全。

昨天被一同学告知,网上的一个QQ密码库中有我的一条记录,当时我就震惊了,赶紧换了密码。当然了,这件事也给了我一个警示,那就是定期的更换自己的QQ密码,会比较的安全。

然后就自己写了个密码保护的小工具。虽然我们没有必要写这么个程序,但是为了复习巩固一下之前学过的知识,还是做点什么吧。


上图

  • 口令正确

口令正确

  • 口令错误

口令错误

代码

本实验是基于Python来实现,使用Tkinter来写的界面。

以当前月份为算子来获取md5加密后的随机字符串来作为密码。

# coding:utf-8
import sys

reload(sys)
sys.setdefaultencoding('utf8')
#    __author__ = '郭 璞'
#    __date__ = '2016/9/13'
#    __Desc__ = 根据月份生成不同的密码
from hashlib import md5
from time import *
from Tkinter import *

# 获取当前月 月份
def getMonth():
    month_ = localtime().tm_mon
    return month_

# 根据口令来返回密码或者错误信息
def generatepassword(password):
    print password
    if password == "芝麻开门":
        full =  md5(str(getMonth())).hexdigest()
        month = getMonth()
        return str('QQ密码:').encode('gbk')+str(full[month:month+10])
    else:
        return "╭(╯^╰)╮,不给密码".encode('gbk')

# 此函数的神奇之处就在于能够实时的更新密码结果区域的内容
def updatestate(pswd,kouling):
    result = generatepassword(kouling)
    print result.decode('gbk')
    print "-----------------------"
    pswd.set(result.decode('gbk'))

# 界面形式来展示
def showresult():
    tk = Tk()

    # 记录用户输入信息
    kouling = StringVar()


    # 记录密码信息
    pswd = StringVar()
    pswd.set('密码待显区')


    frame1 = Frame(tk)
    Label(frame1, text='输入口令').pack(side=LEFT, expand=YES)
    Entry(frame1, textvariable=kouling).pack()
    frame1.pack(side=TOP)

    frame2 = Frame(tk)
    Label(frame2, text='本次密码').pack(side=LEFT, expand=YES)
    Entry(frame2, textvariable=pswd,state='readonly').pack()
    frame2.pack(side=TOP)

    frame3 = Frame(tk)
    btn_pull = Button(frame3, text='获取密码', command=lambda: updatestate(pswd,kouling.get()))
    # btn_pull.bind(citycode.get(),update_weather)
    btn_pull.pack(side=LEFT, expand=YES)
    btn_quit = Button(frame3, text='退出', command=tk.quit).pack(side=LEFT, expand=YES)
    frame3.pack(side=TOP)

    tk.mainloop()


if __name__ == '__main__':
    showresult()

核心

编,解码方面

相信大家也都看到了,代码部分多了许多的encode和decode的部分。这是因为,我们要想在终端界面上显示信息的话,需要对编码进行处理。

终端编码

而我们的Python代码中有这样的一句话。

# coding:utf-8
import sys

reload(sys)
sys.setdefaultencoding('utf8')

其作用就是告诉解释器要以UTF-8的形式保存和读取源文件。
如果不这样做的话,我们就会出现下面这种乱码的情况。

  • 终端乱码

终端乱码

  • tkinter界面乱码

tkinter乱码
所以为了避免出现乱码的情况,我们需要告诉电脑要怎么做即可。

更多关于编码,乱码的信息,不妨看下博主之前总结的一篇文章。

http://blog.csdn.net/marksinoberg/article/details/52254401

Tkinter界面更新

虽然Tkinter作为一套界面开发套件很不错,但是事件处理方面和swing或者mfc,C#有一定的差别的。 比方说,我们不能再一个方法内激活本方法,否则将导致递归异常,无法实现界面的更新。

由于本例需要用户输入来决定输出,所以肯定需要动态的修改界面信息的。因此博主采用了在外边重新定义一个新函数的方式来实现。

def updatestate(pswd,kouling):
    result = generatepassword(kouling)
    print result.decode('gbk')
    print "-----------------------"
    pswd.set(result.decode('gbk'))

这样,我们在Tkinter的button点击事件中就可以做到根据用户输入来决定输出了。

frame3 = Frame(tk)
    # 此处为点击事件核心
    btn_pull = Button(frame3, text='获取密码', command=lambda: updatestate(pswd,kouling.get()))

    btn_pull.pack(side=LEFT, expand=YES)
    btn_quit = Button(frame3, text='退出', command=tk.quit).pack(side=LEFT, expand=YES)
    frame3.pack(side=TOP)

总结

回顾一下,本实验所得。

  • 复习了使用Tkinter写界面的“套路”
  • 加密算法md5
  • 时间日期的使用
目录
相关文章
|
11小时前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
18 0
|
11小时前
|
前端开发 文件存储 Python
python之xhtml2pdf: HTML转PDF工具示例详解
python之xhtml2pdf: HTML转PDF工具示例详解
11 0
|
12小时前
|
Python
Python 中的异常处理机制是一种强大的错误处理工具
【5月更文挑战第8天】Python的异常处理机制借助try/except结构管理错误,提高程序健壮性。异常是中断正常流程的问题,可由多种原因引发。基本结构包括try块(执行可能出错的代码)和except块(处理异常)。通过多个except块可捕获不同类型的异常,finally块确保无论是否异常都执行的代码。此外,raise语句用于主动抛出异常,自定义异常通过继承Exception类实现。with语句配合上下文管理器简化资源管理并确保异常情况下资源正确释放。
20 2
|
11小时前
|
缓存 开发者 Python
《Python中的装饰器:优雅而强大的代码增强工具》
在现代软件开发中,Python语言的灵活性和简洁性备受推崇。其中,装饰器作为一种强大的代码增强工具,为Python开发者提供了优雅的解决方案。本文将深入探讨装饰器的原理、用法以及实际应用场景,帮助读者更好地理解和运用这一技术。
|
11小时前
|
域名解析 JSON API
Python小工具包
【5月更文挑战第2天】构建了一个Python小工具包,包含获取IP、域名解析、JSON格式化和时间戳转换的函数。通过`get_ip_address`和`resolve_domain`实现网络任务,`format_json`用于美化JSON数据,`timestamp_to_datetime`转换时间戳。这些函数可提高开发效率,易于整合到项目中,展现Python的简洁和灵活性。
22 1
Python小工具包
|
11小时前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。
|
11小时前
|
数据可视化 API Python
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
|
11小时前
|
数据可视化 Linux API
Python绘图工具seaborn,教会你如何绘制更加精美的图形(一)
Python绘图工具seaborn,教会你如何绘制更加精美的图形(一)
|
12小时前
|
机器学习/深度学习 数据可视化 数据挖掘
Python绘图工具Matplotlib安装与使用,快速上手
Python绘图工具Matplotlib安装与使用,快速上手
|
11小时前
|
数据可视化 数据挖掘 数据处理
statsmodels, Python 统计分析工具库!
statsmodels, Python 统计分析工具库!
29 1