Python自动生成代码 - 通过tkinter图形化操作生成代码框架
Python自动生成代码 - 通过tkinter图形化操作生成代码框架
- 背景
- 脚本代码
- Demo_CodeGenerator.py
- display.py
- FileHandler.py:
- 脚本运行结果:
- 脚本代码目录
- 其它好玩的Python脚本
- 博主热门文章推荐:
背景
在写代码过程中,如果有频繁重复性的编码操作,或者可以Reuse的各类代码,可以通过Python写一个脚本,自动生成这类代码,就不用每次手写、或者copy了。
- 应用场景:比如新建固定的代码框架、添加一些既定的软件逻辑,通讯协议、消息模板等等,再编写一套代码时,或者一个Function时,每次使通过脚本一键生成代码,就不需要每次都写一遍了,同时可以把相关软件逻辑放进去,也能避免出错。
脚本代码
Demo_CodeGenerator.py
通过以下代码框架,大家想生成什么样的代码就在mycode中append相应的行,然后点开Display输入相关参数,就可以自动生成code文件。
#conding=utf-8from FileHandler import WritetoFile
import sysPwdPath = sys.argv[0]class BuildCode_Dev:'Auto Generate code of Device control'def __init__(self, KeyWord = 'TestDemoCommand'):self.CmdKeyWord = KeyWorddef Generate(self):fileName = 'Code_Dev.txt'mycode = [] #想生成什么样的代码就在mycode中append相应的行,mycode.append('\n---------------------- Demo code Below: ---------------------- ')mycode.append('\n---------------------- Demo code Below: ---------------------- ') mycode.append('\n---------------------- Demo code Below: ---------------------- ')mycode.append('\n***** DemoCode_Get_DataLength() ***** ')mycode.append('\n***** DemoCode_Set_DataLength() ***** ')mycode.append('Switch ('+ self.CmdKeyWord + '):')mycode.append(' case('+ self.CmdKeyWord + '):') mycode.append(' break;') WritetoFile(fileName,mycode)print('Code:'+self.CmdKeyWord + ' Generator OK!')return(mycode)if __name__ == '__main__':if(sys.argv[1:] == []):print('Not input parameter , Use Test Data')CmdKeyWord = 'TestDemoCommand'else:CmdKeyWord = sys.argv[1]#code = BuildCode_Dev(CmdKeyWord)
#code.Generate()#print(PwdPath)
#print(CmdKeyWord)
display.py
主要通过tkinter图形化显示,根据输入参数,点击按钮 生成相应的代码。
# -*- coding: utf-8 -*-
from tkinter import *
from GatewayControl_CodeGenerator import *
from DeviceControl_CodeGenerator import *def GWMsg():txt.delete(1.0,END)Input = str(inputData.get(1.0,END))Cmd_Gw = BuildCode_GW(Input)CodeRst = Cmd_Gw.Generate()s = 'Code_GW.txt Generate Success:\n\n'txt.insert(END, s)txt.insert(END, CodeRst) #inputData.delete(0.0, END) def DevMsg():txt.delete(1.0,END)Input = str(inputData.get(1.0,END))Cmd_Dev = BuildCode_Dev(Input)CodeRst = Cmd_Dev.Generate()s = 'Code_Dev.txt Generate Success:\n\n'txt.insert(END, s)txt.insert(END, CodeRst) #inputData.delete(0.0, END) def clearContent():inputData.delete(1.0, END) txt.delete(1.0,END)root = Tk()
root.geometry('1000x600')
root.title(' Code Generator')
root.config(bg='#f0ffff')#Lable
intro = Label(root,text='请在左侧输入消息/命令名字, 然后选择相应按钮生成代码',\bg='#d3fbfb',\fg='red',\font=('华文新魏',11),\width=20,\height=2,\relief=RIDGE)intro.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.1)#Input
inputData = Text(root, font = ('',14))
inputData.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.6)#Output
txt = Text(root, font = ('',9))
txt.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.6)#Button
bt_json2bin = Button(root, text='**Demo Control', command=GWMsg, fg ='blue')
bt_json2bin.place(relx=0.4, rely=0.25, relwidth=0.2, relheight=0.1)bt_bin2json = Button(root, text='**Demo Control', command=DevMsg, fg ='blue')
bt_bin2json.place(relx=0.4, rely=0.45, relwidth=0.2, relheight=0.1)bt_clear = Button(root, text='Clear', command=clearContent, fg ='blue')
bt_clear.place(relx=0.4, rely=0.65, relwidth=0.2, relheight=0.1) intro = Label(root,text='产生的完整代码在 Code_GW.txt或Code_Dev.txt中(当前目录 ), 问题联系人:Howard',\bg='#d3fbfb',\fg='red',\font=('华文新魏',11),\width=20,\height=2,\relief=RIDGE)intro.place(relx=0.1, rely=0.8, relwidth=0.8, relheight=0.1)root.mainloop()
FileHandler.py:
主要是把代码写入文件保存
def WritetoFile(FileName,Data):with open(FileName,'w') as record:strr = "\n"content = strr.join(Data)record.write(content+'\n')
脚本运行结果:
运行display.py, 选择相应按钮后,会调用相应生成代码py文件。
最后可以把这个打包成一个exe,方便使用。
脚本代码目录
其它好玩的Python脚本
Python实现自动发送邮件 --自动抓取博客/网站中留言的邮箱并发送相应邮件
Python自动生成代码 - 通过tkinter图形化操作并生成代码框架
Python解析CSV数据 - 通过Pandas解析逻辑分析仪导出的CSV数据
Python通过Django搭建网站执行Lua脚本 (实现数据解析)
博主热门文章推荐:
一篇读懂系列:
- 一篇读懂无线充电技术(附方案选型及原理分析)
- 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
- 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)
LoRa Mesh系列:
- LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
- LoRa学习:信道占用检测原理(CAD)
- LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)
网络安全系列:
- ATECC508A芯片开发笔记(一):初识加密芯片
- SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
- 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
- AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例
嵌入式开发系列:
- 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
- IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
- Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
- Android底层调用C代码(JNI实现)
- 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
- Android/Linux设备有线&无线 双网共存(同时上内、外网)
AI / 机器学习系列:
- AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
- AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
- AI: 什么是机器学习的数据清洗(Data Cleaning)
- AI: 机器学习的模型是如何训练的?(在试错中学习)
- 数据可视化:TensorboardX安装及使用(安装测试+实例演示)
Python自动生成代码 - 通过tkinter图形化操作生成代码框架相关推荐
- 图形化编写html,怎么使用Pytest+Allure生成漂亮的HTML图形化测试报告
怎么使用Pytest+Allure生成漂亮的HTML图形化测试报告 发布时间:2021-05-22 14:13:52 来源:亿速云 阅读:95 作者:小新 这篇文章给大家分享的是有关怎么使用Pytes ...
- python界面设置-PYTHON图形化操作界面的编程七__创建菜单
PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...
- python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单
PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...
- html兴趣测试生成图表源码,用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告
原标题:用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告 对于软件测试来说,测试报告是非常重要的工作产出.一个漂亮.清晰.格式规范的测试报告,能够减少开发人员和测试人员的沟通成本. ...
- 【kimol君的无聊小发明】—用python写论文下载器(图形化界面)
[kimol君的无聊小发明]-用python写论文下载器(图形化界面) 前言 一.使用说明 二.代码分析 1. 功能函数 2. 回调函数 3. 线程生成函数 4. 效果展示 写在最后 前言 某个夜深人 ...
- GIT命令与图形化操作
前言 GIT的操作,分为命令符操作和图形化操作.上网搜了许多帖子,都是一些命令符,图形化的操作很少.本人认为,虽然命令符操作起来很流畅,有一种高手的风范,但对于一些初学者来说,还是比较陌生.图形化工具 ...
- git只提交一张图片_Git 图形化操作之合并提交记录
Git 图形化操作之合并提交记录 Git 图形化操作之合并提交记录 目录1.显示日志2.合并提交记录3.推送合并的提交 独立观察员 2020 年 9 月 24 日 前言:当我们使用 Git 时,有时会 ...
- 阿里云centos7安装和卸载图形化操作界面
登录服务器,执行如下指令安装桌面环境: 安装 MATE Desktop yum groups install "MATE Desktop" 命令输入之后,会列出一大堆文字的,然后显 ...
- Git 图形化操作之合并提交记录
Git 图形化操作之合并提交记录 独立观察员 2020 年 9 月 24 日 目录 1.显示日志 2.合并提交记录 3.推送合并的提交 前言:当我们使用 Git 时,有时会遇到刚提交推送完一次修改,发 ...
最新文章
- 最推荐的深度学习课程
- 自定义注解实现业务分发
- html表单中的数据提交后清空,怎么实现小程序中表单提交后自动清空内容
- docker容器没有apt_使用Docker快速搭建Rails开发环境
- HashMap在java并发中如何发生死循环
- 【英语学习】【Level 07】U05 Best Destination L1 Float and shop
- 中怎么构建ebug模式_Mybatis的设计模式运用
- 快速排序算法_大佬的快速排序算法,果然不一样
- NIO+SocketChannel+Buffer+Selector 多路复用
- java服务端开发 php_Java和 PHP哪种语言更适合直播系统后台开发
- python webservice框架_python webservice hello world
- 在线latex的一些操作
- 《ANSYS 14.0超级学习手册》一1.2 ANSYS 14.0简介
- CTFshow-菜狗杯-misc(1-6)
- 中国十大1至3岁童车品牌辐轮王土拨鼠世界儿童自行车品牌排行榜
- 如何破解winrar(可用)
- TypeScript学习总结
- screen 命令详解
- [转]jackson json字符串、map、java对象的转换例子
- 水晶报表A4纸打印两张中一刀凭证