推荐:
在通过看书自学python过程中,已看过三本书:
a.从入门到实践:对于初学者非常友好的一本书(非常简单),推荐入门使用
b.Python编程快速上手-让繁琐工作自动化:比第一本书稍微复杂点,介绍很多Python
能做的基础工作
c.流畅的python:非常好的一本进阶书籍,讲解非常细致、全面,建议有一定基础的同学再去阅读这本书。目前正在学习中。。。
介绍
在工作中需要经常通过接口申请邮箱,每次申请个数不一,需要不断的调整脚本,非常麻烦。通过帖子了解到python的GUI使用,发现目前适合初学者的还是wxpython,也可以使用wxfrombuilder。
画一个win窗口
为了后续代码阅读方便和调用方便,本次以类的形式画GUI页面
class TextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, '自动生成邮箱', size=(400, 250))
#第四个参数为窗口的名称
#size代表这个窗口的长宽是多少
画一个背景板
上面创建窗口相当于准备好一个画板,画板准备好后还需要铺上画布,才能开始画画
panel = wx.Panel(self, -1) # 画背景板
添加静态说明文字
staticText = wx.StaticText(panel, -1, '每天最多生成10个邮箱!!!', (150, 3))
# 第三个参数为显示内容,第四个参数为静态文放置的位置
font = wx.Font(10, wx.DECORATIVE, wx.NORMAL, wx.BOLD) #设置字体样式
staticText.SetFont(font) #调用设置好的字体样式修饰静态文本
添加可输入的文本框
self.multiLabel = wx.StaticText(panel, -1, "请输入数量") #增加静态文本
self.multiText = wx.TextCtrl(panel, -1, "1", size=(50, 20))
#创建一个可输入的文本控件,第四个为控件的大小
self.multiText.SetInsertionPoint(0) # 设置插入点
self.scLabel = wx.StaticText(panel, -1, "生成邮箱")
self.scText = wx.TextCtrl(panel, -1, "", size=(250, 100), style=wx.TE_MULTILINE)
# style=wx.TE_MULTILINE代表输入的文本框内容可以换行(输入内需要加\n实现换行)
self.sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
self.sizer.AddMany([self.multiLabel, self.multiText, self.scLabel, self.scText])
panel.SetSizer(self.sizer) # 修饰画板上控件样式
添加按钮
self.scButton = wx.Button(panel, -1, "生成", pos=(50, 150))
self.scButton.Bind(wx.EVT_BUTTON, self.sc) # 绑定方法
self.fzButton = wx.Button(panel, -1, "一键复制", pos=(200, 150))
self.fzButton.Bind(wx.EVT_BUTTON, self.fz) # 绑定方法
按钮绑定事件
# 后续子类会重写这两个方法
def sc(self, event):
event.Skip()
def fz(self, event):
event.Skip()
创建子类重写绑定事件的方法
class MyFrame(TextFrame):
def __init__(self):
TextFrame.__init__(self)
def sc(self, event):
a = int(self.multiText.GetValue()) # 获取multiText控件输入的值
b = chenckSr(a) # 自己写的检查函数,可以去掉
self.c = scem(b) # 自己写的生成邮箱函数,可以去掉
self.scText.SetValue(self.c) # 将结果显示到scText控件上
def fz(self, even):
setText(self.c) # 自己写的复制函数,可以去掉
代码执行
if __name__ == '__main__':
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()