一、这个学期开始学习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:分享是非常快乐的

Python3的tkinter写一个简单的小程序的更多相关文章

  1. 3.2 Lucene实战:一个简单的小程序

    在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...

  2. 输出多行字符的一个简单JAVA小程序

    public class JAVA { public static void main(String[] args) { System.out.println("-------------- ...

  3. python -----一个简单的小程序(监控电脑内存,cpu,硬盘)

    一个简单的小程序 用函数实现!~~ 实现: cpu 使用率大于百分之50 时  ,  C 盘容量不足5 G 时, 内存 低于2G 时. 出现以上其中一种情况,发送自动报警邮件! 主要运用 到了两个 模 ...

  4. (原创)如何使用boost.asio写一个简单的通信程序(一)

    boost.asio相信很多人听说过,作为一个跨平台的通信库,它的性能是很出色的,然而它却谈不上好用,里面有很多地方稍不注意就会出错,要正确的用好asio还是需要花一番精力去学习和实践的,本文将通过介 ...

  5. (原创)如何使用boost.asio写一个简单的通信程序(二)

    先说下上一篇文章中提到的保持io_service::run不退出的简单办法.因为只要异步事件队列中有事件,io_service::run就会一直阻塞不退出,所以只要保证异步事件队列中一直有事件就行了, ...

  6. 用python写个简单的小程序,编译成exe跑在win10上

    每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...

  7. 用 python 写一个年会抽奖小程序

    使用 pyinstaller 打包工具常用参数指南 pyinstaller -F demo.py 参数 含义 -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe ...

  8. C++写一个排列组合小程序

    今天突然想到一个问题,有时候,针对同一个事件有多种反映,特别是游戏AI当中,这种情况下需要采取最适合的方案,哪种方案最适合,可以将每种方案的结果或影响都计算一遍,从而选择最合适的.最基本就是一个排列组 ...

  9. 【mpvue】使用Mpvue撸一个简单的小程序

    一.快速创建一个mpvue项目   全局安装 vue-cli   (如果有就不需要装了) 创建一个基于mpvue-quickstart模板的新项目,记得选择安装vuex vue init mpvue/ ...

随机推荐

  1. 百度编辑器UEditor的使用方法

    百度编辑器具有丰富文本编辑功能,且开源免费,其使用方法如下: 1.在官网上下载对应的Uditor压缩包:http://ueditor.baidu.com/website/download.html 2 ...

  2. 【Android】Android如何一进入一个activity就弹出输入法键盘

    在AndroidManife.xml中的Activity配置中加入 android:windowSoftInputMode="stateVisible|adjustResize"

  3. java从基础知识(七)java集合

    一.集合类介绍 1.List(元素有放入顺序,可重复) 1.1.List的实现 1.1.1.ArrayList ArrayList就是动态数组(需要连续的存储空间),用MSDN中的说法,就是Array ...

  4. Jquery制作--焦点图淡出淡入

    之前写了一个焦点图左右轮播的,感觉淡出淡入用得也比较多,就干脆一起放上来啦.这个容器用了百分比宽度,图片始终保持居中处理,定宽或者自适应宽度都是可以的. 兼容到IE6+以上浏览器,有淡出淡入速度和切换 ...

  5. http状态代码-转载

    一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 100 ( ...

  6. Qt - 错误总结 - 在自定义类头文件中添加Q_OBJECT 编译时报错(undefined reference to ‘vtable for xxThread)

    错误提示:在添加的QThread子类头文件添加Q_OBJECT时,编译程序,出现"undefined reference to 'vtable for xxThread'"错误提示 ...

  7. find命令

    http://www.jb51.net/os/RedHat/1307.html find 目录(.代表当前目录) -type d -name "..."    f -name &q ...

  8. mybatis批量删除提示类型错误

    一. 这里主要考虑两种参数类型:数组或者集合. 而这点区别主要体现在EmpMapper.xml文件中标签的collection属性: 当collection="array"时,表名 ...

  9. day6

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  10. C# Mvc异常处理过滤器

    using System; using System.Text; using EMS.Domains.Core; using System.Web.Mvc; using Json.Net; using ...