wxpython 优秀的界面_好用的 wxPython 界面設計工具 — wxFormBuilder
在測試過程中,我們常常透過終端機執行指令,來完成一些事情。這些常用的指令,久了可能會忘,我們可以提供一個整合的介面,方便大家使用。
另外,現有自動化測試已經包含了一連串的 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相关推荐
- docker可视化管理界面_分析一款Docker容器可视化管理工具Porttainer
Porttainer介绍 Portainer是一款可视化.轻量级的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker主机及Swarm群集,提供状态显示面板.应用模板快速 ...
- viewpager默认界面_使用默认方法的界面演变–第一部分:方法
viewpager默认界面 几周前,我们详细研究了默认方法 -Java 8中引入的一项功能,该功能允许为接口方法提供实现,即方法主体,从而定义接口中的行为. 引入此功能是为了实现接口演进 . 在JDK ...
- python实现录音小程序 界面_微信小程序录音界面以及功能实现
界面 pick一下最终效果,然后一步一步来. 先把界面效果做出来. 功能: 长按会随动画出现边上半透明的圈,松开会缩回去. 顶部progressBar长按时出现,然后随录音时长变短. 这是界面功能,我 ...
- wxpython 树菜单单击_请教怎么在wxpython调用windows系统的右键菜单(context menu)?
我在学习使用wxpython制作一款windows下的文件管理器,树形菜单已经实现,现在想实现在文件树节点上单击右键,弹出Explorer的上下文菜单,查阅资料无数..... wxpython没有内置 ...
- java除swing以外的界面_关于java的swing界面开发总结
学习了利用java进行的界面设计. 界面的设计无非就是调用java内部自带的一些包,进行组合,以及参数的设置. 相关包涉及到的头文件需要引用头文件. 几个基本组件是:JFrame(窗体).JButto ...
- 联想卡在logo界面_联想电脑卡在logo界面 联想电脑卡在载入界面怎么办
有时候我们会遇到电脑开机一直卡在主板Logo界面的问题,原因有很多,怎么解决呢?下面是小编为大家整理的关于联想电脑卡在载入界面的相关资料,希望对您有所帮助! 联想电脑卡在载入界面的解决方法 下面这张就 ...
- 联想卡在logo界面_联想电脑卡在载入界面如何修复 联想电脑卡在logo界面
电脑有时候会遇到一些故障,发现电脑开机卡在logo界面,我们该怎么进行处理?下面是小编为大家整理的关于联想电脑卡在载入界面的相关资料,希望对您有所帮助! 联想电脑卡在载入界面的解决方法 原因分析:一般 ...
- 联想卡在logo界面_[联想电脑卡在载入界面有什么解决方法]联想电脑卡在logo界面...
[ 联想电脑卡在载入界面有什么解决方法 ] 联想电 脑卡在 logo 界面 首先我是开机时按 F8, 进入安全模式界面.但是进去的时候等待 了几分钟都无反应,上面一直显示请稍等 ... 没办法只有按下 ...
- html5跳转WiFi设置,如何进入wifi管理界面_如何进入wifi设置界面?-192路由网
在本文中,鸿哥给大家介绍,用电脑怎么进入wifi路由器设置页面,并对wifi路由器进行相关的设置. 平时经常有些用户找到鸿哥,问我怎么才能进入wifi管理界面? 原因是这些用户中,很多新手用户是完全不 ...
最新文章
- html需要电脑什么配置,配置一台电脑需要什么 选择配置一台好的台式电脑
- 005_Maven POM
- 分享:手机应用存5个严重的信息安全隐患你晓得吗?
- UIWebView中JS与OC交互 WebViewJavascriptBridge的使用
- 启动定时器t0的工作指令是_看门狗的工作原理、应用和设计思路
- pandas fillna_6个提升效率的pandas小技巧
- HTML5 移动页面自适应手机屏幕四类方法
- Async下处理多个异常
- C++描述杭电OJ 2010.水仙花数 ||
- java、c语言、python、c++的不同之处_总结几点C/C++、Java与Python的区别
- 一个简单的Ajax实例
- Visual.Basic.2008编程参考手册
- JavaScript中引号的多重嵌套
- 洛谷 P2294 [HNOI2005]狡猾的商人
- python结构_科学网—Python与结构分析(1)---反应谱 - 潘超的博文
- MulterError: Unexpected field
- 硬盘服务器哪个好用吗,服务器用固态硬盘好还是机械硬盘好
- java-php-python-ssm南京新东方学校家校通系统计算机毕业设计
- 红蜘蛛不受控制解决方案
- android 符号表情显示乱码,微信昵称含中文、特殊字符、emoji表情乱码的后台解决方案...