一、这个学期开始学习python,但是看了python2和python3,最后还是选择了python3

本着熟悉python的原因,并且也想做一些小程序来增加自己对python的熟练度。所以写了一个简单的程序,这个小程序实现了basa64、base32的加解码。并且添加了一个md5生成的功能。ps:觉得python开发也挺好玩的。。。

二、运行程序截图:

上面的就是程序的整体界面了。。

三、程序的设计:

源代码就在下面贴图了,并且需要的文档可以--------------搜索吧。。。。。

import os
import sys
import base64
import hashlib
import tkinter as tk def main():
root = tk.Tk() // 这里
#fix the root window size
root.minsize(380, 530)
root.maxsize(380, 530) //这里主要是控制窗口的大小,让窗口大小不能改变
#root.geometry("1366x250")
root.title('Bin_LmmH_C Decoder') //设置主窗口的标题
#display the quit button
text = edit(root) //
l = tk.Label(root, text='My name is Bin_LmmH_C', fg='white', bg='black', width=30)
l.grid(sticky=tk.E+tk.W+tk.S+tk.N)
button(root, text)
#quitbutton(root)
root.mainloop() // 这里进入顶层窗口的循环
#build the edit and result Text,建立两个edit控件
def edit(root):
edit = tk.Text(root, fg='white', bg='green', font='微软雅黑', width=30, height=10,)
edit.grid(sticky=tk.N+tk.E+tk.W) #button 传递参数使用lambda函数
#delete all the value in the text editor
clear1 = tk.Button(root, text='Clear', width=27, bg='yellow', font='微软雅黑', command=lambda :edit.delete(1.0, tk.END))
clear1.grid() result = tk.Text(root, fg='white', bg='green', font='微软雅黑', width=30, height=10,)
result.grid(sticky=tk.N+tk.E+tk.W) #button 传递参数使用lambda函数
#delete all the value in the text editor
clear2 = tk.Button(root, text='Clear', width=27, bg='yellow', font='微软雅黑', command=lambda :result.delete(1.0, tk.END))
clear2.grid()
text = [edit, result]
return text

//这里定义窗口中所有的按钮控件,并且显示出来,并且设置好每个按钮的响应函数,使用button的command选项来控制
def button(root, text):
clu = 0
b64en = tk.Button(root, text='Base64 Encode', fg='white', bg='green', command=lambda :b64encode(text))
b64de = tk.Button(root, text='Base64 Decode', fg='white', bg='green', command=lambda :b64decode(text))
b32en = tk.Button(root, text='Base32 Encode', fg='white', bg='green', command=lambda :b32encode(text))
b32de = tk.Button(root, text='Base32 Decode', fg='white', bg='green', command=lambda :b32encode(text))
md5do = tk.Button(root, text='-Md5 Creator-', fg='white', bg='green', command=lambda :md5create(text))
but = [b64en, b64de, b32en, b32de, md5do]
for i in but:
i.grid(row=clu, column=1, sticky=tk.N+tk.S+tk.E+tk.W)
clu += 1
return but def b64encode(text):
#print(len(text), text)
edit, result = text[0], text[1]
enc = edit.get(1.0,tk.END)
try:
res = base64.b64encode(enc[0:-1].encode('ascii'))
#print("res = ", res)
except:
return False
result.insert(1.0, res.decode('ascii'))
return True def b64decode(text):
#print(len(text), text)
edit, result = text[0], text[1]
dec = edit.get(1.0,tk.END)
try:
res = base64.b64decode(dec[0:-1].encode('ascii'))
except:
return False
result.insert(1.0, res.decode('ascii'))
return True def b32encode(text):
#print(len(text), text)
edit, result = text[0], text[1]
enc = edit.get(1.0,tk.END)
try:
res = base64.b32encode(enc[0:-1].encode('ascii'))
result.insert(1.0, res.decode('ascii'))
except:
return False
#showmessage(None, 'Something Error')
return True

//这里定义md5生成函数
def md5create(text):
#print(len(text), text)
edit, result = text[0], text[1]
dec = edit.get(1.0,tk.END) //获取edit控件中的内容
#print("len dec = ", len(dec[0:-1]))
#print("dec = ", dec)
res = hashlib.md5()
try:
#it will add a new line character
res.update(dec[0:-1].encode('ascii'))
except:
return False
result.insert(1.0, res.hexdigest()) //将md5后的数据插入到输出edit控件中
return True if __name__ == '__main__':
main()

四、简单的自我总结:

在进行这次小工具的制作之前,遇到了一些问题和一些小技巧,比如按钮传递参数的问题,就可以使用lambda这个表达式轻松的完成,而不用去考虑什么全局变量之类的,这个我感觉是非常方便的,遇到的问题都通过网络来解决了,感觉还是挺好的,但是我对于自己没有将问题记录下来这个坏习惯,我是非常不爽的,我会改变掉这个坏习惯。好好学习,天天向上。    ps:分享是非常快乐的

最新文章

  1. 【C#】1.3 WPF应用程序学习要点
  2. mybatis xml 中的特殊符转义字符号和模糊查询
  3. 熟悉css/css3颜色属性
  4. open falcon dashboard 安装
  5. 母版页的 page_load事件执行两次
  6. 【python游戏编程之旅】第三篇---pygame事件与设备轮询
  7. Mongodb 笔记07 分片、配置分片、选择片键、分片管理
  8. 踏着前人的脚印学hadoop——ipc中的Client
  9. Net use命令
  10. 安装mod_deflate模块启用apache的GZIP压缩
  11. 用户输出表单处理php
  12. HDU-3473Minimum Sum
  13. Niagara AX之axvelocity的使用
  14. JavaEE(11) - 消息驱动EJB
  15. TortoiseSVN历史版本安装及svn服务器搭建
  16. HDU 1969 Pie(二分查找)
  17. 1*Json对象声明简单,复合,对象数组
  18. android相对布局中控件的常用属性【转】
  19. 【源码分析】你必须知道的string.IsNullOrEmpty && string.IsNullOrWhiteSpace
  20. 剑指Offer 18. 二叉树的镜像 (二叉树)

热门文章

  1. String StringBuffer StringBuilder
  2. Oracle基本查询语言
  3. 集中日志服务器Rsyslog
  4. 调用WebServices超时
  5. select中文字垂直居中解决办法
  6. MySQL索引类型总结和使用技巧以及注意事项
  7. AngularJS下拉列表select在option动态变化之后多出了一个错误项的问题
  8. [转载]深入理解HTTP Session
  9. WebApi官方系列
  10. sublime text快捷键