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实现图片批量剪切示例
Mar 25 Python
python字典多条件排序方法实例
Jun 30 Python
python通过函数属性实现全局变量的方法
May 16 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
python网络爬虫学习笔记(1)
Apr 09 Python
python3实现域名查询和whois查询功能
Jun 21 Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
django2笔记之路由path语法的实现
Jul 17 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
python绘制分布折线图的示例
Sep 24 Python
Python之matplotlib绘制折线图
Apr 13 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数据库抽象层 PDO
2011/05/07 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
微信小程序仿美团城市选择
2018/06/06 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
python中__slots__用法实例
2015/06/04 Python
Python编码类型转换方法详解
2016/07/01 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
关于python字符串方法分类详解
2019/08/20 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
医学专业职业生涯规划范文
2014/02/05 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
司法助理专业自荐书
2014/06/13 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers
Python find()、rfind()方法及作用
2022/12/24 Python