在測試過程中,我們常常透過終端機執行指令,來完成一些事情。這些常用的指令,久了可能會忘,我們可以提供一個整合的介面,方便大家使用。

另外,現有自動化測試已經包含了一連串的 test case。有時我們不需要跑一整套,只需要跑部分的 test case。這時如果有一個介面可以方便提供勾選,指定要執行的 test case,會方便很多。除此之外,測試結果可以直接匯總後顯示在 UI 介面上,會比較直覺。基於這樣的需求,我們可以透過 wxPython 做一個有 UI 介面的測試工具包,幫助工作效率提升。

我們選擇使用 wxFormBuilder 來輔助我們設計 wxPython 程式的介面。

wxFormBuilder 是一套專注於設計 UI 的工具,他的特色有:

使用 OS native 的 UI 組件

(像是:wxWidgets dialogs, frames, panels, toolbars and menubars)

EX. 同一份 GUI source code,在 Windows 上執行出來看起來會像是 Windows 的視窗,在 Mac 上執行出來看起來會像是 Mac 風格的視窗

Support 產生出 C++/ Python/ PHP 等等的 source code

換言之,它並非專屬為 Python 而生

利用 wxFormBuilder 生成一個 GUI 界面的 Python Based 程式,

會需要進行以下三個階段:

1. 安裝 wxFormBuilder

2. 利用 wxFormBuilder 設計出一個 UI

3. 針對 step 2 生成的 GUI 加入各事件的邏輯(Python Script)

使用 wxFormBuilder 設計 UI 的步驟是:

1. 增加上述所說的組件

2. 在組件中放入各種 sizer

3. 加入各種 UI component,像是 Button 之類的(如下圖所示)

4. 加入 UI component 對應的動作,例如 clickMe Button 的 onClickMe()

5. 自動生成 UI source code

以上只有完成 UI 佈局,還有針對各個 UI component 註冊他們支援的 event listener。

想要針對各個 UI component 的 event callback 加入相對應的邏輯 (in Python),建議直接繼承上述生成的 GUI,再編寫程式。這樣的用意是讓 UI 跟邏輯的程式碼分離,程式碼才好維護。

最後附上「計算機的各種運算類型的壓力測試」介面和程式碼:

# -*- coding: utf-8 -*-

###########################################################################

## Python code generated with wxFormBuilder (version Nov 27 2012)

## http://www.wxformbuilder.org/

##

## PLEASE DO "NOT" EDIT THIS FILE!

###########################################################################

import wx

import wx.xrc

import wx.richtext

###########################################################################

## Class Frame_Stress_Test

###########################################################################

class Frame_Stress_Test ( wx.Frame ):

def __init__( self, parent ):

wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"計算機的壓力測試", pos = wx.DefaultPosition, size = wx.Size( 400,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

self.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70, 90, 90, False, wx.EmptyString ) )

self.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_3DLIGHT ) )

self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHT ) )

bSizer2 = wx.BoxSizer( wx.VERTICAL )

gSizer4 = wx.GridSizer( 0, 3, 0, 0 )

self.Text_ChooseTestItems = wx.StaticText( self, wx.ID_ANY, u"請選擇測試項目:", wx.DefaultPosition, wx.DefaultSize, 0 )

self.Text_ChooseTestItems.Wrap( -1 )

self.Text_ChooseTestItems.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_CAPTIONTEXT ) )

gSizer4.Add( self.Text_ChooseTestItems, 0, wx.ALL, 5 )

choice_TestItemsChoices = [ u"加、減法", u"乘法", u"極大數", u"全部都測" ]

self.choice_TestItems = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, choice_TestItemsChoices, 0 )

self.choice_TestItems.SetSelection( 0 )

gSizer4.Add( self.choice_TestItems, 0, wx.ALL, 5 )

self.button_StartTest = wx.Button( self, wx.ID_ANY, u"RUN", wx.Point( 100,100 ), wx.DefaultSize, 0 )

gSizer4.Add( self.button_StartTest, 0, wx.ALL, 5 )

bSizer2.Add( gSizer4, 1, wx.EXPAND, 5 )

self.richText_ShowResult = wx.richtext.RichTextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 400,0 ), 0|wx.VSCROLL|wx.HSCROLL|wx.NO_BORDER|wx.WANTS_CHARS )

self.richText_ShowResult.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_CAPTIONTEXT ) )

bSizer2.Add( self.richText_ShowResult, 1, wx.EXPAND |wx.ALL, 5 )

self.SetSizer( bSizer2 )

self.Layout()

self.Centre( wx.BOTH )

# Connect Events

self.button_StartTest.Bind( wx.EVT_BUTTON, self.onClickButton_startTest )

def __del__( self ):

pass

# Virtual event handlers, overide them in your derived class

def onClickButton_startTest( self, event ):

event.Skip()

# -*- coding: utf-8 -*-

# file: practice_main.py

# import practice.py, which was generated by wxFB

import practice

import wx

import os

class Practice(practice.Frame_Stress_Test):

def __init__(self, parent):

practice.Frame_Stress_Test.__init__(self, parent)

def onClickButton_startTest(self, event):

os.system('python stress_add_10000_times.py')

class EventTriggerMain(wx.App):

def OnInit(self):

self.m_frame = Practice(None)

self.m_frame.Show()

return True

app = EventTriggerMain()

app.MainLoop()

請按讚:

喜歡 正在載入...

相關

wxpython 优秀的界面_好用的 wxPython 界面設計工具 — wxFormBuilder相关推荐

  1. docker可视化管理界面_分析一款Docker容器可视化管理工具Porttainer

    Porttainer介绍 Portainer是一款可视化.轻量级的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker主机及Swarm群集,提供状态显示面板.应用模板快速 ...

  2. viewpager默认界面_使用默认方法的界面演变–第一部分:方法

    viewpager默认界面 几周前,我们详细研究了默认方法 -Java 8中引入的一项功能,该功能允许为接口方法提供实现,即方法主体,从而定义接口中的行为. 引入此功能是为了实现接口演进 . 在JDK ...

  3. python实现录音小程序 界面_微信小程序录音界面以及功能实现

    界面 pick一下最终效果,然后一步一步来. 先把界面效果做出来. 功能: 长按会随动画出现边上半透明的圈,松开会缩回去. 顶部progressBar长按时出现,然后随录音时长变短. 这是界面功能,我 ...

  4. wxpython 树菜单单击_请教怎么在wxpython调用windows系统的右键菜单(context menu)?

    我在学习使用wxpython制作一款windows下的文件管理器,树形菜单已经实现,现在想实现在文件树节点上单击右键,弹出Explorer的上下文菜单,查阅资料无数..... wxpython没有内置 ...

  5. java除swing以外的界面_关于java的swing界面开发总结

    学习了利用java进行的界面设计. 界面的设计无非就是调用java内部自带的一些包,进行组合,以及参数的设置. 相关包涉及到的头文件需要引用头文件. 几个基本组件是:JFrame(窗体).JButto ...

  6. 联想卡在logo界面_联想电脑卡在logo界面 联想电脑卡在载入界面怎么办

    有时候我们会遇到电脑开机一直卡在主板Logo界面的问题,原因有很多,怎么解决呢?下面是小编为大家整理的关于联想电脑卡在载入界面的相关资料,希望对您有所帮助! 联想电脑卡在载入界面的解决方法 下面这张就 ...

  7. 联想卡在logo界面_联想电脑卡在载入界面如何修复 联想电脑卡在logo界面

    电脑有时候会遇到一些故障,发现电脑开机卡在logo界面,我们该怎么进行处理?下面是小编为大家整理的关于联想电脑卡在载入界面的相关资料,希望对您有所帮助! 联想电脑卡在载入界面的解决方法 原因分析:一般 ...

  8. 联想卡在logo界面_[联想电脑卡在载入界面有什么解决方法]联想电脑卡在logo界面...

    [ 联想电脑卡在载入界面有什么解决方法 ] 联想电 脑卡在 logo 界面 首先我是开机时按 F8, 进入安全模式界面.但是进去的时候等待 了几分钟都无反应,上面一直显示请稍等 ... 没办法只有按下 ...

  9. html5跳转WiFi设置,如何进入wifi管理界面_如何进入wifi设置界面?-192路由网

    在本文中,鸿哥给大家介绍,用电脑怎么进入wifi路由器设置页面,并对wifi路由器进行相关的设置. 平时经常有些用户找到鸿哥,问我怎么才能进入wifi管理界面? 原因是这些用户中,很多新手用户是完全不 ...

最新文章

  1. html需要电脑什么配置,配置一台电脑需要什么 选择配置一台好的台式电脑
  2. 005_Maven POM
  3. 分享:手机应用存5个严重的信息安全隐患你晓得吗?
  4. UIWebView中JS与OC交互 WebViewJavascriptBridge的使用
  5. 启动定时器t0的工作指令是_看门狗的工作原理、应用和设计思路
  6. pandas fillna_6个提升效率的pandas小技巧
  7. HTML5 移动页面自适应手机屏幕四类方法
  8. Async下处理多个异常
  9. C++描述杭电OJ 2010.水仙花数 ||
  10. java、c语言、python、c++的不同之处_总结几点C/C++、Java与Python的区别
  11. 一个简单的Ajax实例
  12. Visual.Basic.2008编程参考手册
  13. JavaScript中引号的多重嵌套
  14. 洛谷 P2294 [HNOI2005]狡猾的商人
  15. python结构_科学网—Python与结构分析(1)---反应谱 - 潘超的博文
  16. MulterError: Unexpected field
  17. 硬盘服务器哪个好用吗,服务器用固态硬盘好还是机械硬盘好
  18. java-php-python-ssm南京新东方学校家校通系统计算机毕业设计
  19. 红蜘蛛不受控制解决方案
  20. android 符号表情显示乱码,微信昵称含中文、特殊字符、emoji表情乱码的后台解决方案...

热门文章

  1. javaSE----继承
  2. serv u服务器显示图片,图解经典FTP服务器工具 SERV-U最安全的设置【防止被入侵】...
  3. python中构造函数可以重载吗_python中的函数重载了吗?
  4. group by 查询分组后 各组的内部条数与组的条数
  5. springboot搞定全局自定义异常
  6. Android开发笔记(二十五)assets目录下的文件读取
  7. 微信只显示分享朋友圈和好友  屏蔽其他的分享
  8. 南理工14级第4组软件课程设计报告
  9. java中IO写文件工具类
  10. php中静态方法的和属性的使用