python小白零基础学习(一)记录第一个使用wxpython代码实现的GUI页面

推荐:

在通过看书自学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()

结果展示

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值