wxPython小记录

 

常用控件

文本控件:TextCtrl

标签控件:StaticText

复选框控件:CheckBox

按钮控件:Button

布局控件:BoxSizer=》注意布局必须进行设置才能生效Panel.SetSizer(Boxsizer名称)

panel控件:Panel

窗体控件:Frame

对话框的使用:wx.MessageDialog

#使用消息对话框方法,没有父窗体,所以None,提示信息和框标题分别写下,wx.YES_DEFAULT表示只有一个确定选项的模式,
# wx.ICON_QUESTION表示询问模式。假如显示模式是点击了yes按钮wx.ID_YES,就销毁==》dlg.Destroy()

#使用消息对话框方法,没有父窗体,所以None,提示信息和框标题分别写下,wx.YES_DEFAULT表示只有一个确定选项的模式,wx.ICON_QUESTION表示询问模式。假如显示模式是点击了yes按钮wx.ID_YES,就销毁==》dlg.Destroy()
if minlen == '':
    dlg=wx.MessageDialog(None,'最小长度不能为空','错误信息',wx.YES_DEFAULT|wx.ICON_QUESTION)
    if dlg.ShowModal()==wx.ID_YES:
        dlg.Destroy()

如何布局设计:逐行添加,平行排列。最后把每一行对应的BoxSizer添加到垂直布局的BoxSizer中

如何循环添加多个BoxSizer布局

for i in range(1, 8):
    box = 'boxsizer' + str(i)
    boxsizerFinale.Add(eval(box))

#使用面型对象编程实现基于GUI框架的自动测试数据的工具
# 导入库文件
import wx
import string,random
# 类的定义
class GUI_test():
    # 类的初始化定义,创建所有用到的控件
    def __init__(self):
        self.app = wx.App()
        # 定义框体
        self.window = wx.Frame(None, title='约车', size=(600, 500))
        # 定义panel
        self.panel = wx.Panel(self.window)
        # 定义标签
        self.lblminlen = wx.StaticText(self.panel, label='最小长度:')
        # 定义文本框
        self.txtminlen = wx.TextCtrl(self.panel)
        # 定义复选框
        self.chkup = wx.CheckBox(self.panel, label='包含大写字母')
        self.chkblow = wx.CheckBox(self.panel, label='包含小写字母')
        self.chkbnum = wx.CheckBox(self.panel, label='包含数字')
        self. chkbpnu = wx.CheckBox(self.panel, label='包含符号')
        self.chkbno = wx.CheckBox(self.panel, label='包含序号')
        self.chkbrexemail = wx.CheckBox(self.panel, label='包含邮箱后缀')
        self.chkbfile = wx.CheckBox(self.panel, label='保存到邮件')

        # 定义标签
        self.lblmaxlen = wx.StaticText(self.panel, label='最大长度:')
        # 定义文本框
        self.txtmaxlen = wx.TextCtrl(self.panel)
        # 定义标签
        self. lblfile = wx.StaticText(self.panel, label='文件名及路径')
        # 定义文本框
        self. extfile = wx.TextCtrl(self.panel)
        # 定义标签
        self. lblcount = wx.StaticText(self.panel, label='数据总数')
        # 定义文本框
        self.txtcount = wx.TextCtrl(self.panel)
        # 定义按钮
        self.buttonOK = wx.Button(self.panel, label='确定')
        self.buttonReset = wx.Button(self.panel, label='重置')
    # 设置控件布局
    def layout(self):
    # 设置布局
        boxsizer1 = wx.BoxSizer()
        boxsizer1.Add(self.lblminlen, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer1.Add(self.txtminlen, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer1.Add( self.lblmaxlen, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer1.Add(self.txtmaxlen, flag=wx.LEFT | wx.RIGHT, border=10)

        # 设置第二行水平布局
        boxsizer2 = wx.BoxSizer()
        boxsizer2.Add(self.chkup, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer2.Add(self.chkblow, flag=wx.LEFT | wx.RIGHT, border=10)
        # 设置第3行水平布局
        boxsizer3 = wx.BoxSizer()
        boxsizer3.Add(self.chkbnum, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer3.Add(self. chkbpnu, flag=wx.LEFT | wx.RIGHT, border=10)
        # 设置第4行水平布局
        boxsizer4 = wx.BoxSizer()
        boxsizer4.Add(self.chkbno, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer4.Add(self.chkbrexemail, flag=wx.LEFT | wx.RIGHT, border=10)
        # 设置第5行水平布局
        boxsizer5 = wx.BoxSizer()
        boxsizer5.Add(self.chkbfile, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer5.Add(self. lblfile, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer5.Add(self. extfile, flag=wx.LEFT | wx.RIGHT, border=10)
        # 设置第6行水平布局
        boxsizer6 = wx.BoxSizer()
        boxsizer6.Add(self. lblcount, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer6.Add(self.txtcount, flag=wx.LEFT | wx.RIGHT, border=10)
        # 设置第7行水平布局
        boxsizer7 = wx.BoxSizer()
        boxsizer7.Add(self.buttonOK, flag=wx.LEFT | wx.RIGHT, border=10)
        boxsizer7.Add(self.buttonReset, flag=wx.LEFT | wx.RIGHT, border=10)
        # 设置垂直布局
        boxsizerFinale = wx.BoxSizer(wx.VERTICAL)
        for i in range(1, 8):
            box = 'boxsizer' + str(i)
            boxsizerFinale.Add(eval(box))
        # 设置标签起效
        self.panel.SetSizer(boxsizerFinale)
    def eventbind(self):
        #绑定确定按钮buttonOK对应的事件,self.checkinput表示类里面自己的方法
        self.buttonOK.Bind(wx.EVT_BUTTON,self.checkinput)
        #绑定重置按钮和重置方法
        self.buttonReset.Bind(wx.EVT_BUTTON,self.reset)
    # 对界面输入进行校验,不能为空
    def checkinput(self,event):
        #事件绑定方法一定要写event,固定写法,判断最小长度文本框中输入的内容是否为空
        minlen=self.txtminlen.GetValue()
        maxlen = self.txtmaxlen.GetValue()
        if minlen == '':
            #使用消息对话框方法,没有父窗体,所以None,提示信息和框标题分别写下,wx.YES_DEFAULT表示只有一个确定选项的模式,
            # wx.ICON_QUESTION表示询问模式。假如显示模式是点击了yes按钮wx.ID_YES,就销毁==》dlg.Destroy()
            dlg=wx.MessageDialog(None,'最小长度不能为空','错误信息',wx.YES_DEFAULT|wx.ICON_QUESTION)
            if dlg.ShowModal()==wx.ID_YES:
                dlg.Destroy()
        elif maxlen == '':
            dlg=wx.MessageDialog(None,'最大长度不能为空','错误系信息',wx.YES_DEFAULT|wx.ICON_QUESTION)
            if dlg.ShowModal()==wx.ID_YES:
                dlg.Destroy()
        # 判断最小长度不能大于最大程度
        elif int(minlen)>=int(maxlen):
            dlg=wx.MessageDialog(None,'最小长度不能大于最大长度','错误信息',wx.YES_DEFAULT|wx.ICON_QUESTION)
            if dlg.ShowModal()==wx.ID_YES:
                dlg.Destroy()
        # 符合条件判断才进行调用
        if minlen!='' and maxlen!='' and int(minlen)<=int(maxlen):
            self.createdata(minlen,maxlen)

    # 把界面所有输入内容清空,时间方法必须加入event参数,谨记
    def reset(self,event):
        self.txtmaxlen.SetValue('')
        self.txtminlen.SetValue('')
    # 创建测试数据
    def createdata(self, minlen,maxlen):
        str=''
        # 生成指定范围内的随机数
        num=random.randint(int(minlen),int(maxlen))
        # 默认生成字符串
        str=str+string.ascii_letters+string.ascii_letters+string.ascii_letters
        # 获取字符串
        resultdata=''.join(random.sample(str,num))
        print(resultdata)
        return resultdata


    #运行gui整体框架
    def run(self):
        # 显示窗体
        self.window.Show(True)
        # 启动app
        self.app.MainLoop()
if __name__ == '__main__':
    guiOBJ=GUI_test()
    guiOBJ.layout()
    # 记得检查是否调用了按钮触发事件,别像我,排查半天。在运行前调用
    guiOBJ.eventbind()
    guiOBJ.run()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值