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多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
Python之py2exe打包工具详解
Jun 14 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
对Python中Iterator和Iterable的区别详解
Oct 18 Python
python print出共轭复数的方法详解
Jun 25 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
python调用摄像头的示例代码
Sep 28 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 Python
python 字典和列表嵌套用法详解
Jun 29 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
Elasticsearch 批量操作
Apr 19 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
php 获取百度的热词数据的代码
2012/02/18 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
PHP多态代码实例
2015/06/26 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
python修改操作系统时间的方法
2015/05/18 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python和Go语言的区别总结
2019/02/20 Python
机器学习实战之knn算法pandas
2019/06/22 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
物流司机岗位职责
2013/12/28 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
假期安全教育广播稿
2014/10/04 职场文书