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 装饰器功能以及函数参数使用介绍
Jan 27 Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
python基础教程项目二之画幅好画
Apr 02 Python
Numpy数组转置的两种实现方法
Apr 17 Python
用python生成1000个txt文件的方法
Oct 25 Python
python实现简易动态时钟
Nov 19 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
详解Django 时间与时区设置问题
Jul 23 Python
Python字符串的修改方法实例
Dec 19 Python
Django 自定义404 500等错误页面的实现
Mar 08 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 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添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
python中mechanize库的简单使用示例
2014/01/10 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python中函数参数调用方式分析
2018/08/09 Python
pytorch permute维度转换方法
2018/12/14 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
Python3运算符常见用法分析
2020/02/14 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
使用K.function()调试keras操作
2020/06/17 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
社团成立邀请函
2014/01/08 职场文书
群众路线党课主持词
2014/04/01 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书