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 04 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
python实现批量修改文件名代码
Sep 10 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
Python之时间和日期使用小结
Feb 14 Python
python使用thrift教程的方法示例
Mar 21 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
浅谈python数据类型及其操作
May 25 Python
Python必备技巧之字符数据操作详解
Mar 23 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 上传文件大小限制
2009/07/05 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
php图片上传存储源码并且可以预览
2011/08/26 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
python实现爬取图书封面
2018/07/05 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
python生成器用法实例详解
2019/11/22 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
python 常见的排序算法实现汇总
2020/08/21 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
应届生会计电算化求职信
2013/10/03 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
业务员岗位职责
2015/02/03 职场文书
小英雄雨来观后感
2015/06/09 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python