V2.0 对输入框最小长度,最大长度的事件处理
import wx
import string, random
class GUI_CreatData:
def __init__(self):
self.app = wx.App()
self.window = wx.Frame(None, title="试验", size=(500, 500))
self.panel = wx.Panel(self.window)
self.lblmin = wx.StaticText(self.panel, label="最小长度")
self.txtmin = wx.TextCtrl(self.panel)
self.lblmax = wx.StaticText(self.panel, label="最大长度")
self.txtmax = wx.TextCtrl(self.panel)
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)
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}"))
self.panel.SetSizer(boxFinal)
def eventbind(self):
self.butOK.Bind(wx.EVT_BUTTON, self.checkinput)
self.butreset.Bind(wx.EVT_BUTTON, self.reset)
def checkinput(self, event):
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)
def reset(self, event):
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
def run(self):
self.window.Show(True)
self.app.MainLoop()
if __name__ == '__main__':
gui = GUI_CreatData()
gui.layout()
gui.eventbind()
gui.run()
V2.1 主要涉及代码结构的优化
import wx
import string, random
class GUI_CreatData:
def __init__(self):
self.app = wx.App()
self.window = wx.Frame(None, title="试验", size=(500, 500))
self.panel = wx.Panel(self.window)
self.lblmin = wx.StaticText(self.panel, label="最小长度")
self.txtmin = wx.TextCtrl(self.panel)
self.lblmax = wx.StaticText(self.panel, label="最大长度")
self.txtmax = wx.TextCtrl(self.panel)
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)
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}"))
self.panel.SetSizer(boxFinal)
def eventbind(self):
self.butOK.Bind(wx.EVT_BUTTON, self.checkinput)
self.butreset.Bind(wx.EVT_BUTTON, self.reset)
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)
def reset(self, event):
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
def run(self):
self.window.Show(True)
self.app.MainLoop()
if __name__ == '__main__':
gui = GUI_CreatData()
gui.layout()
gui.eventbind()
gui.run()