当前位置:首页 » 《关注互联网》 » 正文

测试工具研发_脚本(5):制作略复杂GUI窗体_腾哥儿的测试之路的博客

18 人参与  2022年01月13日 09:27  分类 : 《关注互联网》  评论

点击全文阅读


文章目录

  • 1、V1.0_GUI初步排版梳理代码
  • 2、V2.0_优化结构为面向对象
  • 3、V3.0 总结
    • 关于GUI窗体实现的总体思路梳理

1、V1.0_GUI初步排版梳理代码

# 试验带标签文字的文本框

import wx

# 初始化APP
app = wx.App()
# 定义窗体
window = wx.Frame(None, title="试验", size=(500, 500))
# 定义panel
panel = wx.Panel(window)
# 定义标签
lblmin = wx.StaticText(panel, label="最小长度")
# 定义文本框
txtmin = wx.TextCtrl(panel)
# 定义标签
lblmax = wx.StaticText(panel, label="最大长度")
# 定义文本框
txtmax = wx.TextCtrl(panel)
# 定义复选框
chkB1 = wx.CheckBox(panel, label="包含大写字母")
chkB2= wx.CheckBox(panel, label="包含小写字母")
chkB3 = wx.CheckBox(panel, label="包含数字")
chkB4= wx.CheckBox(panel, label="包含符号")
chkB5 = wx.CheckBox(panel, label="包含序号")
chkB6 = wx.CheckBox(panel, label="包含邮箱后缀")
chkB7 = wx.CheckBox(panel, label="保存到文件")
# 定义标签
lblfile = wx.StaticText(panel, label="文件名及路径")
# 定义文本框
txtfile = wx.TextCtrl(panel)
# 定义标签
lblshu = wx.StaticText(panel, label="数据总数")
# 定义文本框
txtshu = wx.TextCtrl(panel)
# 定义2个按钮
butOK = wx.Button(panel, label="确定")
butreset = wx.Button(panel, label="重置")



# 设置布局
box1 = wx.BoxSizer()  # 默认是横向的
box1.Add(lblmin, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(txtmin, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(lblmax, flag=wx.LEFT | wx.TOP, border=10)
box1.Add(txtmax, flag=wx.LEFT | wx.TOP, border=10)
# 设置第二行的布局
box2 = wx.BoxSizer()  # 默认是横向的
box2.Add(chkB1, flag=wx.LEFT | wx.TOP, border=10)
box2.Add(chkB2, flag=wx.LEFT | wx.TOP, border=10)
# 设置第三行的布局
box3 = wx.BoxSizer()  # 默认是横向的
box3.Add(chkB3, flag=wx.LEFT | wx.TOP, border=10)
box3.Add(chkB4, flag=wx.LEFT | wx.TOP, border=10)
# 设置第四行的布局
box4 = wx.BoxSizer()  # 默认是横向的
box4.Add(chkB5, flag=wx.LEFT | wx.TOP, border=10)
box4.Add(chkB6, flag=wx.LEFT | wx.TOP, border=10)
# 设置第五行的布局
box5 = wx.BoxSizer()  # 默认是横向的
box5.Add(chkB7, flag=wx.LEFT | wx.TOP, border=10)
box5.Add(lblfile, flag=wx.LEFT | wx.TOP, border=10)
box5.Add(txtfile, flag=wx.LEFT | wx.TOP, border=10)
# 设置第六行的布局
box6 = wx.BoxSizer()  # 默认是横向的
box6.Add(lblshu, flag=wx.LEFT | wx.TOP, border=10)
box6.Add(txtshu, flag=wx.LEFT | wx.TOP, border=10)
# 设置第七行的布局
box7 = wx.BoxSizer()  # 默认是横向的
box7.Add(butOK, flag=wx.LEFT | wx.TOP, border=10)
box7.Add(butreset, flag=wx.LEFT | wx.TOP, border=10)


# 设置垂直布局
boxFinal = wx.BoxSizer(wx.VERTICAL)
boxFinal.Add(box1)
boxFinal.Add(box2)
boxFinal.Add(box3)
boxFinal.Add(box4)
boxFinal.Add(box5)
boxFinal.Add(box6)
boxFinal.Add(box7)
panel.SetSizer(boxFinal)

# 显示窗体
window.Show(True)
# 启动app
app.MainLoop()

2、V2.0_优化结构为面向对象

# V2.0优化结构---面向对象

import wx
import string, random


# 定义类
class GUI_CreatData:
    # 类的初始化
    def __init__(self):
        # 初始化APP
        self.app = wx.App()
        # 定义窗体
        self.window = wx.Frame(None, title="试验", size=(500, 500))
        # 定义panel
        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)
        # 定义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)

    # 运行app
    def run(self):
        self.window.Show(True)
        self.app.MainLoop()


if __name__ == '__main__':
    gui = GUI_CreatData()
    gui.layout()
    gui.run()

3、V3.0 总结

关于GUI窗体实现的总体思路梳理

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/33146.html

定义  布局  横向  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1