侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

Python  /  管理员 发布于 7年前   299

背景

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

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

脚本代码

Demo_CodeGenerator.py

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

#conding=utf-8from FileHandler import WritetoFileimport sysPwdPath = 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')#Lableintro = 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)#InputinputData = Text(root, font = ('',14))inputData.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.6)#Outputtxt = 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 元组操作总结
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客