[Python] 安裝 wxFormBuilder 圖形化介面設計工具

posted in: MUR MUR, Python, 部落格 | 0

wxFormBuilder 是 wxWidgets Toolkit 的 Open Source GUI 設計應用程式,它允許創建跨平台應用程式。它是用 C++ 編寫的簡化,易於使用的界面可以加快開發速度並簡化軟件維護。wxFormBuilder 是一個圖形化開發工具,它可以發出 C++、Python、PHP、Lua 和 XRC 的程式碼。

Reference – Wikipedia

wxFormBuilder is an open source GUI designer application for wxWidgets toolkit, which allows creating cross-platform applications. A streamlined, easy to use interface enables faster development and easier maintenance of software. It is written in C++.wxFormBuilder is a visual development tool, but also allows including non-graphical components. It can emit C++, PythonPHPLuaand XRC code. Emitted code cannot be edited directly in the program.


目前的工作有大部分都以 Python 來開發自動化測試程式,從軟體自動安裝、控制待測產品、控制各項測試儀器等。不過,以 Python 開發的程式需要使用 Windows 命令視窗啟動,藉由帶入參數或參數設定檔等方式提供各項複雜功能,但硬體工程師似乎都很排斥敲指令,還常常掛在嘴邊說那家設計的自動化測試程式有圖形化介面耶!

 

聽在耳裡內心只有百般的無奈,其實「複雜的自動化測試功能」與「華麗的圖形化介面功能」根本是兩件事 …

複雜的自動化測試功能就像一位 “端莊賢慧” 的女人,你需要多花一點時間了解與相處才能知道她的好

而華麗的圖形化介面功能則像一位 “婀娜多姿” 的女人,往往帶回家才知道什麼都不太會啊!


【安裝】

目前 wxFormBuilder 沒有專屬的官網,畢竟它只是一套 Rapid application development (RAD) 工具,不過它在 GitHub 有專案進行開發與維護,請參考 GitHub – wxFormBuilder

wxFormBuilder 提供兩種安裝方式,如下所示:

  • Download Binaries
  • Install From Source

這兩種安裝方式對 “一般使用者” 來說差異不大,以 Binaries 安裝的話在使用上還比較方便些,因為可以直接啟動 wxFormBuilder,但如果你是 “進階使用者” 的話又有修改原始碼的需求,便可考慮從 Source 的安裝方式。

本篇將以 “Install From Source” 的方式進行安裝,流程如下:

  • 安裝 MinGW – 建議選擇 32 位元版本
  • 安裝 MinGW 開發套件 – wxWidgets、git、make、binutils、gcc、boost
  • 下載 wxFormBuilder
  • 對 wxFormBuilder 進行配置與編譯

【Step 1】

請至 MSYS2 下載 MinGW 32 位元版本的安裝檔,如圖根據安裝程序逐步安裝即可。

 

【Step 2】

開發 MinGW32 套件 – wxWidgets、git、make、binutils、gcc、boost

pacman -S --needed mingw-w64-i686-wxWidgets git make mingw-w64-i686-binutils mingw-w64-i686-gcc mingw-w64-i686-boost

 

【Step 3】

下載 wxFormBuilder

git clone --recursive --depth=1 https://github.com/wxFormBuilder/wxFormBuilder

 

【Step 4】

對 wxFormBuilder 進行配置與編譯,可忽略 diagnostics.h 無法建立 link 的錯誤 (不影響編譯)

cd wxFormBuilder
cmd.exe /C "create_build_files4.bat --wx-root=/mingw32/bin --force-wx-config --disable-mediactrl"
ln -s /mingw32/include/binutils/bfd.h /mingw32/include/bfd.h
ln -s /mingw32/include/binutils/diagnostics.h /mingw32/include/diagnostics.h
ln: failed to create symbolic link '/mingw32/include/diagnostics.h': No such file or directory
ln -s /mingw32/include/binutils/symcat.h /mingw32/include/symcat.h
ln -s /mingw32/lib/binutils/libbfd.a /mingw32/lib/libbfd.a
ln -s /mingw32/lib/binutils/libiberty.a /mingw32/lib/libiberty.a
cd build/3.0/gmake
sed 's!\$(LDFLAGS) \$(RESOURCES) \$(ARCH) \$(LIBS)!\$(LIBS) \$(LDFLAGS) \$(RESOURCES) \$(ARCH)!g' *.make -i
sed 's!-lbfd!-lbfd -lz!g' *.make -i

 

在編譯之前,先檢查 gcc 版本

gcc --version
gcc.exe (Rev2, Built by MSYS2 project) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

對 wxFormBuilder 編譯發行版本,可忽略 option: ‘–rcflags’ 錯誤 (不影響編譯)

make config=release
==== Building TiCPP (release) ====
Creating ../../../sdk/lib
Creating obj/Release/TiCPP
ticpp.cpp
tinystr.cpp
tinyxml.cpp
tinyxmlerror.cpp
tinyxmlparser.cpp
Linking TiCPP
==== Building plugin-interface (release) ====
Creating obj/Release/plugin-interface
xrcconv.cpp
wizard.cpp
Linking plugin-interface
==== Building additional-components-plugin (release) ====
Creating obj/Release/additional-components-plugin
additional.cpp
Linking additional-components-plugin
==== Building common-components-plugin (release) ====
Creating obj/Release/common-components-plugin
common.cpp
Linking common-components-plugin
==== Building containers-components-plugin (release) ====
Creating obj/Release/containers-components-plugin
containers.cpp
Linking containers-components-plugin
==== Building forms-components-plugin (release) ====
Creating obj/Release/forms-components-plugin
forms.cpp
Linking forms-components-plugin
==== Building layout-components-plugin (release) ====
Creating obj/Release/layout-components-plugin
layout.cpp
Linking layout-components-plugin
==== Building wxFormBuilder (release) ====
Creating obj/Release/wxFormBuilder
maingui.cpp
codegen.cpp
codeparser.cpp
codewriter.cpp
cppcg.cpp
luacg.cpp
phpcg.cpp
pythoncg.cpp
xrccg.cpp
stack.cpp
database.cpp
objectbase.cpp
types.cpp
xrcfilter.cpp
about.cpp
appdata.cpp
bitmaps.cpp
cmdproc.cpp
customkeys.cpp
genericpanel.cpp
mainframe.cpp
menueditor.cpp
palette.cpp
title.cpp
wxfbevent.cpp
wxfbmanager.cpp
codeeditor.cpp
cpppanel.cpp
dataobject.cpp
innerframe.cpp
menubar.cpp
visualeditor.cpp
visualobj.cpp
geninhertclass.cpp
geninhertclass_gui.cpp
objinspect.cpp
wxfbadvprops.cpp
luapanel.cpp
objecttree.cpp
phppanel.cpp
pythonpanel.cpp
xrcpanel.cpp
xrcpreview.cpp
annoyingdialog.cpp
encodingutils.cpp
filetocarray.cpp
stringutils.cpp
typeconv.cpp
wxfbipc.cpp
md5.cc
wxFormBuilder.rc
  *** Error: Unrecognised option: '--rcflags'
Use wx-config --help for information on command line options.
Linking wxFormBuilder


 

終於編譯完成,啟動 wxFormBuilder 吧!

cd ../../../output/
./wxFormBuilder.exe

 


*-。-。-。-。-。-。-。--。-。-。-。-*

如果你也喜歡貝果桑的文章,請不吝嗇的給我一個讚加鼓勵唷~

快到 「貝果桑的粉絲頁」 (點以下連結),和我一起聊聊天吧!! : )