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
  • 时间日期的使用
目录
相关文章
|
8天前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
85 61
Python装饰器实战:打造高效性能计时工具
|
13天前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
62 37
Python时间序列分析工具Aeon使用指南
|
18天前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
1月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
429 7
|
2月前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
307 4
|
2月前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
2月前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
211 7
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
80 2
|
3月前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
3月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
76 2

热门文章

最新文章