#V4.0完整版
#导入相关的类库文件
import random
import string
import wx
import csv
class test_tool_GUI_v4():#类的初始化方法,创建所有的控件def __init__(self):self.app=wx.App()self.window=wx.Frame(None,title="测试数据生成工具",size=(400,400))self.panel=wx.Panel(self.window)#定义标签self.minbq=wx.StaticText(self.panel,label="最小长度")#定义文本框self.mintxt=wx.TextCtrl(self.panel)#定义标签2self.maxbq=wx.StaticText(self.panel,label="最大长度")#定义文本框2self.maxtxt=wx.TextCtrl(self.panel)#定义标签3self.wenjianbq=wx.StaticText(self.panel,label="文件名及路径")#定义文本框3self.wenjiantxt=wx.TextCtrl(self.panel)#定义标签4self.shujubq=wx.StaticText(self.panel,label="数据总数")#定义文本框4self.shujutxt=wx.TextCtrl(self.panel)#定义复选框self.daxue=wx.CheckBox(self.panel,label="包含大写字母")self.xiaoxue=wx.CheckBox(self.panel,label="包含小写字母")self.shuzi=wx.CheckBox(self.panel,label="包含数字")self.fuhao=wx.CheckBox(self.panel,label="包含符号")self.xuhao=wx.CheckBox(self.panel,label="包含序号")self.youxiang= wx.CheckBox(self.panel,label="包含邮箱后缀")self.baocun=wx.CheckBox(self.panel,label="保存到文件")#定义按键self.queding=wx.Button(self.panel,label="确定")self.chongzhi=wx.Button(self.panel,label="重置")#设置布局BoxSizerdef boxsizer(self):#设置一个水平的BoxSizerboxsizer1=wx.BoxSizer()boxsizer1.Add(self.minbq,flag=wx.EXPAND|wx.LEFT|wx.TOP,border=15)boxsizer1.Add(self.mintxt,flag=wx.LEFT|wx.TOP,border=15)boxsizer1.Add(self.maxbq,flag=wx.EXPAND|wx.LEFT|wx.TOP,border=15)boxsizer1.Add(self.maxtxt,flag=wx.LEFT|wx.TOP,border=15)#设置第二个水平的BoxSizerboxsizer2=wx.BoxSizer()boxsizer2.Add(self.daxue,flag=wx.LEFT|wx.TOP,border=15)boxsizer2.Add(self.xiaoxue,flag=wx.LEFT|wx.TOP, border=15)#设置第三个水平的BoxSizerboxsizer3=wx.BoxSizer()boxsizer3.Add(self.shuzi,flag=wx.LEFT|wx.TOP,border=15)boxsizer3.Add(self.fuhao,flag=wx.LEFT|wx.TOP,border=15)# 设置第四个水平的BoxSizerboxsizer4=wx.BoxSizer()boxsizer4.Add(self.xuhao,flag=wx.LEFT|wx.TOP,border=15)boxsizer4.Add(self.youxiang,flag=wx.LEFT|wx.TOP,border=15)# 设置第五个水平的BoxSizerboxsizer5=wx.BoxSizer()boxsizer5.Add(self.baocun,flag=wx.LEFT|wx.TOP,border=15)boxsizer5.Add(self.wenjianbq,flag=wx.LEFT|wx.TOP,border=15)boxsizer5.Add(self.wenjiantxt,flag=wx.LEFT|wx.TOP,border=15)# 设置第六个水平的BoxSizerboxsizer6=wx.BoxSizer()boxsizer6.Add(self.shujubq,flag=wx.LEFT|wx.TOP,border=15)boxsizer6.Add(self.shujutxt,flag=wx.LEFT|wx.TOP,border=15)# 设置第七个水平的BoxSizerboxsizer7=wx.BoxSizer()boxsizer7.Add(self.queding,flag=wx.LEFT|wx.TOP,border=15)boxsizer7.Add(self.chongzhi,flag=wx.LEFT|wx.TOP,border=15)#设置一个垂直的boxsizerboxsizer8=wx.BoxSizer(wx.VERTICAL)for i in range(1,8):box="boxsizer"+str(i)boxsizer8.Add(eval(box))#让boxsizer生效self.panel.SetSizer(boxsizer8)#设置新窗口显示数据def show_window(self,list):str=""self.windownew=wx.Frame(None,title="测试数据",size=(600, 600))self.panelnew=wx.Panel(self.windownew)for row in list:str=str+row+"\n"wx.TextCtrl(self.panelnew,value=str,style=wx.TE_MULTILINE,size=(600, 600))self.windownew.Show(True)#校验输入长度的最小值与最大值def check_len(self):# 获取控件中输入的内容self.min=self.mintxt.GetValue()self.max=self.maxtxt.GetValue()# 当为空if self.min=="":#给出提示不能为空a=wx.MessageDialog(None,"最小长度不能为空", "错误信息",wx.YES_DEFAULT|wx.ICON_QUESTION)# 点击确定if a.ShowModal()==wx.ID_YES:#对话框关闭a.Destroy()elif self.max=="":#给出提示不能为空a=wx.MessageDialog(None,"最大长度不能为空", "错误信息",wx.YES_DEFAULT|wx.ICON_QUESTION)#点击确定if a.ShowModal()==wx.ID_YES:# 对话框关闭a.Destroy()elif int(self.min)>int(self.max):#提示最小长度不能大于最大长度a=wx.MessageDialog(None,"最小长度不能大于最大长度","错误信息", wx.YES_DEFAULT|wx.ICON_QUESTION)#点击确定if a.ShowModal()==wx.ID_YES:# 对话框关闭a.Destroy()else:return 1#校验复选框def xuanze(self):self.list=[]#判断是否没有选择任何条件if self.daxue.GetValue()==True:self.list.append("daxue")if self.xiaoxue.GetValue()==True:self.list.append("xiaoxue")if self.shuzi.GetValue()==True:self.list.append("shuzi")if self.fuhao.GetValue()==True:self.list.append("fuhao")if self.xuhao.GetValue()==True:self.list.append("xuhao")if self.youxiang.GetValue()==True:self.list.append("youxiang")if self.list==[]:a=wx.MessageDialog(None,"前四项至少选择一项!","提示信息",wx.YES_DEFAULT|wx.ICON_QUESTION)# 点击确定if a.ShowModal() == wx.ID_YES:# 对话框关闭a.Destroy()elif self.list==["xuhao"]:a=wx.MessageDialog(None, "前四项至少选择一项!", "提示信息", wx.YES_DEFAULT|wx.ICON_QUESTION)# 点击确定if a.ShowModal() == wx.ID_YES:# 对话框关闭a.Destroy()elif self.list==["youxiang"]:a=wx.MessageDialog(None,"前四项至少选择一项!", "提示信息", wx.YES_DEFAULT|wx.ICON_QUESTION)# 点击确定if a.ShowModal() == wx.ID_YES:# 对话框关闭a.Destroy()elif self.list==["xuhao","youxiang"]:a=wx.MessageDialog(None,"前四项至少选择一项!","提示信息", wx.YES_DEFAULT|wx.ICON_QUESTION)# 点击确定if a.ShowModal() == wx.ID_YES:# 对话框关闭a.Destroy()else:return 1#校验文件名及路径是否存在并保存数据def savefile(self,list):#判断路径及文件名是否存在filename=self.wenjiantxt.GetValue()if filename=="":#弹出提示a=wx.MessageDialog(None,"请输入文件名及路径","提示信息", wx.YES_DEFAULT|wx.ICON_QUESTION)if a.ShowModal()==wx.ID_YES:a.Destroy()return 0elif filename.endswith(".csv"):file=open(filename,"w",newline="")w=csv.writer(file)print("传入文件中的内容",list)for row in list:w.writerow([row])file.close()else :#弹出提示a=wx.MessageDialog(None,"请输入正确的文件名及路径","提示信息", wx.YES_DEFAULT|wx.ICON_QUESTION)if a.ShowModal()==wx.ID_YES:a.Destroy()return 0#校验输入的数量def check_num(self):if self.shujutxt.GetValue()=="" or int(self.shujutxt.GetValue())<1:#弹出提示a=wx.MessageDialog(None,"请输入大于1的整数","提示信息", wx.YES_DEFAULT|wx.ICON_QUESTION)if a.ShowModal()==wx.ID_YES:a.Destroy()return 0else:number=int(self.shujutxt.GetValue())return number#根据选择条件创建测试数据def createdata(self,i):strmp=""xuhao=iyouxiang=["@qq.com","@163.com","@126.com","@sina.com","@sogou.com"]num1=random.randint(int(self.min),int(self.max))#判断勾选的条件if "daxue" in self.list:strmp=strmp+3*string.ascii_uppercaseif "xiaoxue" in self.list:strmp=strmp+3*string.ascii_lowercaseif "shuzi" in self.list:strmp=strmp+5*string.digitsif "fuhao" in self.list:strmp=strmp+3*string.punctuationresult=''.join(random.sample(strmp,num1))#增加一个序号if "xuhao" in self.list:result=str(xuhao)+resultif "youxiang" in self.list:#任意取一个邮箱后缀email=random.choice(youxiang)result=result+email#print(result2)return result#调用界面校验结果def check_input(self,event):list=[]#获取长度校验结果a=self.check_len()if a==None:return 0else:#获取复选框校验结果result=self.xuanze()if result==None:return 0else:#获取输入数量校验结果number=self.check_num()if number==None:return 0else:for i in range(1,number+1):data=self.createdata(i)list.append(data)#调用新窗口显示数据if self.baocun.GetValue()==False:self.show_window(list)#调用校验文件名及路径是否存在并保存数据else:self.savefile(list)#重置文本框def reset(self,event):# 提示是否清空文本框a=wx.MessageDialog(None,"是否清空文本框","提示信息",wx.YES_NO|wx.ICON_QUESTION)#点击"是"if a.ShowModal()==wx.ID_YES:#清空文本框self.mintxt.SetValue("")self.maxtxt.SetValue("")self.wenjiantxt.SetValue("")self.shujutxt.SetValue("")#清空勾选项self.daxue.SetValue(False)self.xiaoxue.SetValue(False)self.shuzi.SetValue(False)self.fuhao.SetValue(False)self.xuhao.SetValue(False)self.youxiang.SetValue(False)self.baocun.SetValue(False)# 对话框关闭a.Destroy()#点击“否”else:#对话框关闭a.Destroy()#将按钮和事件绑定def event_bind(self):self.queding.Bind(wx.EVT_BUTTON,self.check_input)self.chongzhi.Bind(wx.EVT_BUTTON,self.reset)def run(self):#激活窗体self.window.Show()# 运行APPself.app.MainLoop()
if __name__ == '__main__':test_tool_GUI_obj=test_tool_GUI_v4()test_tool_GUI_obj.boxsizer()test_tool_GUI_obj.event_bind()test_tool_GUI_obj.run()




研发基于GUI的随机数据生成工具(V4.0完整版:设置新窗口显示数据并写入文本文件)相关推荐

  1. Web 开发人员必备的随机 JSON 数据生成工具

    在 Web 开发中,经常会需要一些测试数据来测试接口或者功能时候正确.JSON Generator 就是这样一款生成随机 JSON 数据的在线工具,Web 开发人员必备,记得收藏和分享啊. 您可能感兴 ...

  2. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

  3. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...

  4. freemarker mysql 生成bean_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)...

    TableGo_20191026 v6.6.6 正式发布,此次版本更新如下: 1.新增通过自定义模板生成Word文档的功能,可以使用FreeMarker模板生成自定义格式的数据库文档. 2.新增 Sw ...

  5. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)

    TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下:           1.新增对JDK9及以上版本Java环境的支持           2.生成JavaBean更名为生 ...

  6. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.4.0版)

    TableGo_20210921 v7.4.0 正式版发布,此次版本累计更新如下:           1.新增企业或个人的简单定制版本,为企业和个人提供软实力的增值           2.新增导入 ...

  7. mysql javabean 工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)...

    TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下: 1.新增对JDK9及以上版本Java环境的支持 2.生成JavaBean更名为生成数据模型并且提供了C#.C++.Gol ...

  8. labelme数据增强_NO. 21 标注工具 amp; 合成数据生成工具

    [VGG Image Annotator ( VIA )] 简介:快速.轻便.设计精良,但功能有限 网址:http://www.robots.ox.ac.uk/~vgg/software/via/ [ ...

  9. sphinx:基于 Python 的文档生成工具

    sphinx:基于 Python 的文档生成工具 Motivation 对于软件开发来说,文档是软件可维护性的重要保障.sphinx 是一款文档生成工具,以 restructuredText 为标记语 ...

  10. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之数据生成工具chatette

    Rasa课程.Rasa培训.Rasa面试.Rasa实战系列之数据生成工具chatette Chatette简介 Chatette是一个 Python 程序,它为给定模板文件的Rasa NLU生成训练数 ...

最新文章

  1. List嵌套List数据,全部List数组一起更新问题
  2. Nature综述:从土壤到临床-微生物次级代谢产物对抗生素耐受性和耐药性的影响...
  3. npm install 原理(node_modules)
  4. 134. Gas Station加油站
  5. 分布式数据库相关概念介绍
  6. GitKraken - 简单教程
  7. 暑假集训单切赛第一场 CF 191A Dynasty Puzzles
  8. python单例模式和装饰器
  9. 第10章 评价分类结果 学习上
  10. Atitit 工作手册之班委会工作法 班级管理法 目录 1.1. 班级管理工作规范 1 1.2. 班长、学习委员、生活委员、纪律委员、宣传委员、文体委员组成的班委会 1 2. 班委会职责 1 2.
  11. for循环中取出最大最小 累加_使用 for 循环实现从 1 累加至 10。_学小易找答案...
  12. Windows XP 下如何用 Modem 发传真
  13. Shape Shifter——制作简单动画
  14. Java 中获取Exception的详细信息
  15. 2018-03-08,模板消息推送,全代码,多多指教
  16. 初学C语言1--C语言用什么软件编写
  17. 自动化(二)使用Python打开网页
  18. nginx 配置端口转发
  19. 【JavaMap接口】HashMap源码解读实例
  20. Jenkins的Windows10下载与安装

热门文章

  1. 我的数模之旅(开始)
  2. CTR和CVR联合训练
  3. Centos7部署Mantis
  4. 如何让他喜欢你?让他多看一眼
  5. Huge pages (标准大页)和 Transparent Huge pages(透明大页)
  6. 停机坪上的飞机有可能被偷走吗?
  7. Users用户类默认值及各属性可能的值
  8. Cheat Engine(CE)的下载和安装指南以及相关教程
  9. Java视频教程,最新全套Java教程!
  10. 2022年Google SEO基础知识,技术搜索引擎优化介绍