self.chkB1 wx.CheckBox(self.panel, label 包含大写字母 )
self.chkB2 wx.CheckBox(self.panel, label 包含小写字母 )
self.chkB3 wx.CheckBox(self.panel, label 包含数字 )
self.chkB4 wx.CheckBox(self.panel, label 包含符号 )
self.chkB5 wx.CheckBox(self.panel, label 包含序号 )
self.chkB6 wx.CheckBox(self.panel, label 包含邮箱后缀 )
self.chkB7 wx.CheckBox(self.panel, label 保存到文件 )
# 定义标签
self.lblfile wx.StaticText(self.panel, label 文件名及路径 )
# 定义文本框
self.txtfile wx.TextCtrl(self.panel)
# 定义标签
self.lblshu wx.StaticText(self.panel, label 数据总数 )
# 定义文本框
self.txtshu wx.TextCtrl(self.panel)
# 定义2个按钮
self.butOK wx.Button(self.panel, label 确定 )
self.butreset wx.Button(self.panel, label 重置 )
# 控件布局
def layout(self):
# 设置布局
box1 wx.BoxSizer() # 默认是横向的
box1.Add(self.lblmin, flag wx.LEFT | wx.TOP, border 10)
box1.Add(self.txtmin, flag wx.LEFT | wx.TOP, border 10)
box1.Add(self.lblmax, flag wx.LEFT | wx.TOP, border 10)
box1.Add(self.txtmax, flag wx.LEFT | wx.TOP, border 10)
# 设置第二行的布局
box2 wx.BoxSizer() # 默认是横向的
box2.Add(self.chkB1, flag wx.LEFT | wx.TOP, border 10)
box2.Add(self.chkB2, flag wx.LEFT | wx.TOP, border 10)
# 设置第三行的布局
box3 wx.BoxSizer() # 默认是横向的
box3.Add(self.chkB3, flag wx.LEFT | wx.TOP, border 10)
box3.Add(self.chkB4, flag wx.LEFT | wx.TOP, border 10)
# 设置第四行的布局
box4 wx.BoxSizer() # 默认是横向的
box4.Add(self.chkB5, flag wx.LEFT | wx.TOP, border 10)
box4.Add(self.chkB6, flag wx.LEFT | wx.TOP, border 10)
# 设置第五行的布局
box5 wx.BoxSizer() # 默认是横向的
box5.Add(self.chkB7, flag wx.LEFT | wx.TOP, border 10)
box5.Add(self.lblfile, flag wx.LEFT | wx.TOP, border 10)
box5.Add(self.txtfile, flag wx.LEFT | wx.TOP, border 10)
# 设置第六行的布局
box6 wx.BoxSizer() # 默认是横向的
box6.Add(self.lblshu, flag wx.LEFT | wx.TOP, border 10)
box6.Add(self.txtshu, flag wx.LEFT | wx.TOP, border 10)
# 设置第七行的布局
box7 wx.BoxSizer() # 默认是横向的
box7.Add(self.butOK, flag wx.LEFT | wx.TOP, border 10)
box7.Add(self.butreset, flag wx.LEFT | wx.TOP, border 10)
# 设置垂直布局
boxFinal wx.BoxSizer(wx.VERTICAL)
for i in range(1, 8):
boxFinal.Add(eval(f box{i} )) # eval函数将字符串转换为对象
self.panel.SetSizer(boxFinal)
# 事件绑定 绑定确定按钮对应的事件
def eventbind(self):
self.butOK.Bind(wx.EVT_BUTTON, self.checkinput)
self.butreset.Bind(wx.EVT_BUTTON, self.reset)
# 事件 对界面进行校验.这是一个事件 用来绑定按钮的 所以入参里面需要带一个event
# 事件 对界面进行校验
def checkinput(self, event):
self.checklen()
# 判断最小长度和最大长度
def checklen(self):
# 判断最小长度输入是否为空
minlen self.txtmin.GetValue()
maxlen self.txtmax.GetValue()
if minlen :
# 给出提示
dlg wx.MessageDialog(None, 最小长度不能为空 , 错误信息 , wx.YES_DEFAULT | wx.ICON_QUESTION)
if dlg.ShowModal() wx.ID_YES:
dlg.Destroy()
return 0
# 判断最大长度输入是否为空
elif maxlen :
# 给出提示
dlg wx.MessageDialog(None, 最大长度不能为空 , 错误信息 , wx.YES_DEFAULT | wx.ICON_QUESTION)
if dlg.ShowModal() wx.ID_YES:
dlg.Destroy()
return 0
elif int(minlen) int(maxlen):
# 给出提示
dlg wx.MessageDialog(None, 最大长度不能小于最小长度 , 错误信息 , wx.YES_DEFAULT | wx.ICON_QUESTION)
if dlg.ShowModal() wx.ID_YES:
dlg.Destroy()
return 0
# 调用生成测试数据
if minlen ! and maxlen ! and int(minlen) int(maxlen):
self.creatdata(minlen, maxlen)
# 事件 把界面的内容清空[添加询问ing]
def reset(self, event):
# dlg wx.MessageDialog(None, 是否需要删除 , 提示信息 , wx.YES_NO)
# if dlg.ShowModal() wx.ID_YES:
# dlg.Destroy()
# return 0
self.txtmin.SetValue( )
self.txtmax.SetValue( )
# 创建测试数据
def creatdata(self, minlen, maxlen):
num random.randint(int(minlen), int(maxlen))
str1 string.ascii_letters string.digits string.ascii_letters string.digits
resultdata .join(random.sample(str1, num))
print(resultdata)
return resultdata
# 运行app
def run(self):
self.window.Show(True)
self.app.MainLoop()