Python自动生成代码 使用tkinter图形化操作并生成代码框架


Posted in Python onSeptember 18, 2019

背景

在写代码过程中,如果有频繁重复性的编码操作,或者可以Reuse的各类代码,可以通过Python写一个脚本,自动生成这类代码,就不用每次手写、或者copy了。

比如新建固定的代码框架、添加一些既定的软件逻辑,通讯协议、消息模板等等,再编写一套代码时,或者一个Function时,每次使通过脚本一键生成代码,就不需要每次都写一遍了,同时可以把相关软件逻辑放进去,也能避免出错。

脚本代码

Demo_CodeGenerator.py

具体详细代码去掉了,大家想生成什么样的代码就在mycode中append相应的行,然后点开Display输入相关参数,就可以自动生成code文件。

#conding=utf-8

from FileHandler import WritetoFile
import sys

PwdPath = sys.argv[0]

class BuildCode_Dev:
 'Auto Generate code of Device control'

 def __init__(self, KeyWord = 'TestDemoCommand'):
  self.CmdKeyWord = KeyWord

 def 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自动生成代码 使用tkinter图形化操作并生成代码框架

脚本代码目录

Python自动生成代码 使用tkinter图形化操作并生成代码框架

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
玩转python爬虫之URLError异常处理
Feb 17 Python
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
Python开发的HTTP库requests详解
Aug 29 Python
Python实现的购物车功能示例
Feb 11 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
Oct 26 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
Python select及selectors模块概念用法详解
Jun 22 Python
解决jupyter notebook启动后没有token的坑
Apr 24 Python
Python 元组操作总结
Sep 18 #Python
python sorted函数的小练习及解答
Sep 18 #Python
python 默认参数相关知识详解
Sep 18 #Python
python连接PostgreSQL数据库的过程详解
Sep 18 #Python
Python传递参数的多种方式(小结)
Sep 18 #Python
余弦相似性计算及python代码实现过程解析
Sep 18 #Python
python之yield和Generator深入解析
Sep 18 #Python
You might like
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
jQuery的学习步骤
2011/02/23 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
Python实现的建造者模式示例
2018/08/06 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
python 通过文件夹导入包的操作
2020/06/01 Python
python线性插值解析
2020/07/05 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
python如何提升爬虫效率
2020/09/27 Python
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
家长对孩子评语
2014/01/30 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
中学生评语大全
2014/04/18 职场文书
生物技术专业求职信
2014/06/10 职场文书
2014会计年终工作总结
2014/12/20 职场文书
世界红十字日活动总结
2015/02/10 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python