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图形化操作生成代码框架相关推荐

  1. 图形化编写html,怎么使用Pytest+Allure生成漂亮的HTML图形化测试报告

    怎么使用Pytest+Allure生成漂亮的HTML图形化测试报告 发布时间:2021-05-22 14:13:52 来源:亿速云 阅读:95 作者:小新 这篇文章给大家分享的是有关怎么使用Pytes ...

  2. python界面设置-PYTHON图形化操作界面的编程七__创建菜单

    PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...

  3. python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单

    PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...

  4. html兴趣测试生成图表源码,用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告

    原标题:用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告 对于软件测试来说,测试报告是非常重要的工作产出.一个漂亮.清晰.格式规范的测试报告,能够减少开发人员和测试人员的沟通成本. ...

  5. 【kimol君的无聊小发明】—用python写论文下载器(图形化界面)

    [kimol君的无聊小发明]-用python写论文下载器(图形化界面) 前言 一.使用说明 二.代码分析 1. 功能函数 2. 回调函数 3. 线程生成函数 4. 效果展示 写在最后 前言 某个夜深人 ...

  6. GIT命令与图形化操作

    前言 GIT的操作,分为命令符操作和图形化操作.上网搜了许多帖子,都是一些命令符,图形化的操作很少.本人认为,虽然命令符操作起来很流畅,有一种高手的风范,但对于一些初学者来说,还是比较陌生.图形化工具 ...

  7. git只提交一张图片_Git 图形化操作之合并提交记录

    Git 图形化操作之合并提交记录 Git 图形化操作之合并提交记录 目录1.显示日志2.合并提交记录3.推送合并的提交 独立观察员 2020 年 9 月 24 日 前言:当我们使用 Git 时,有时会 ...

  8. 阿里云centos7安装和卸载图形化操作界面

    登录服务器,执行如下指令安装桌面环境: 安装 MATE Desktop yum groups install "MATE Desktop" 命令输入之后,会列出一大堆文字的,然后显 ...

  9. Git 图形化操作之合并提交记录

    Git 图形化操作之合并提交记录 独立观察员 2020 年 9 月 24 日 目录 1.显示日志 2.合并提交记录 3.推送合并的提交 前言:当我们使用 Git 时,有时会遇到刚提交推送完一次修改,发 ...

最新文章

  1. 最推荐的深度学习课程
  2. 自定义注解实现业务分发
  3. html表单中的数据提交后清空,怎么实现小程序中表单提交后自动清空内容
  4. docker容器没有apt_使用Docker快速搭建Rails开发环境
  5. HashMap在java并发中如何发生死循环
  6. 【英语学习】【Level 07】U05 Best Destination L1 Float and shop
  7. 中怎么构建ebug模式_Mybatis的设计模式运用
  8. 快速排序算法_大佬的快速排序算法,果然不一样
  9. NIO+SocketChannel+Buffer+Selector 多路复用
  10. java服务端开发 php_Java和 PHP哪种语言更适合直播系统后台开发
  11. python webservice框架_python webservice hello world
  12. 在线latex的一些操作
  13. 《ANSYS 14.0超级学习手册》一1.2 ANSYS 14.0简介
  14. CTFshow-菜狗杯-misc(1-6)
  15. 中国十大1至3岁童车品牌辐轮王土拨鼠世界儿童自行车品牌排行榜
  16. 如何破解winrar(可用)
  17. TypeScript学习总结
  18. screen 命令详解
  19. [转]jackson json字符串、map、java对象的转换例子
  20. 水晶报表A4纸打印两张中一刀凭证

热门文章

  1. java课程设计心得体会绪论
  2. php with函数,string - PHP中的startsWith()和endsWith()函数
  3. 股票配资系统平台源码搭建-股票配资交易软件开发
  4. windows AD域的特点
  5. qgraphicsview 绘图软件 github_重磅推荐!免费在线分析与绘图神器分享
  6. 第五章 编码/加密——《跟我学Shiro》
  7. 第十六章 综合实例——《跟我学Shiro》
  8. 使用Alexnet实现CIFAR10数据集的训练
  9. Socket网络编程面试题
  10. Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!