作者 主題: 想找個用來開發 Windows 桌面應用程式 的工具  (閱讀 5738 次)

0 會員 與 1 訪客 正在閱讀本文。

iknowlab

  • SA 苦力組
  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
古早以前,我是用 Visual Basic 6 寫些小玩意,可以很快的製作出一個問卷資料收集工具。
沒多久,Internet 盛行 就寫 php+MySQL 架網站,十幾年了,有些監控網站現今還在運作。
網站套件愈來愈多,本來是開發 XOOPS 的模組,現在挑 Drupal 的模組來堆砌著用,網站功能就很強大了。
Webbase 似乎排山倒海而來,但是十幾年下來,我看到 Windows 桌面應用程式還是有其難以替代的項目:
 - 前端功能豐富完整
 - 人機介面效率高
 - 周邊搭配
 - 列印排版
所以,我一直在挑一個開發工具。我並不是一個軟體公司,我開發軟體都是專案用途。開發成本考量,暫不會考慮微軟系列工具。
研究 Netbeans 一年多,如此龐大的工具,我的電腦大都運行困難,攪和著我對 Java 語言莫明的陰影,決定另尋樂土。
手機盛行,Android iOS 的 APP 開發蓬勃,讓跨平台的需求更加重要。
逛了幾天的 Internet ,看到幾件事
 - Node.js 可以用 JavaScript 語法,撰寫 Windows 桌面程式
 - Node-Webkit 打包 Node.js 變成獨立桌面程式
 - Qt 跨平台視窗開發套件,有收費商用版、免費社群版,但是用 C++ 語言,還沒摸過。
 - wxPython 剛剛在 SA 逛到,似乎已停擺。
我是已經完成 Qt 範例程式的測試,確定要鑽研下去,並且希望有同好來一起用讀書會的方式交換心得。地點在我辦公室「實習工廠」,每月1~2次。
在我這計畫開始之前,還是先張貼出來,除了預先呼朋引伴之外,也希望有前輩給些建議。

(連寫三篇,為何這裡就不用「圖形驗證碼」「回答 Linux 問題」)

darkranger

  • 榮譽學長
  • 俺是博士!
  • *****
  • 文章數: 1338
    • 檢視個人資料
    • http://darkranger.no-ip.org
如果可以接受 Python 的話(應該沒問題吧,因為很好學)
則利用 PyQt 或 PySide 這類將 Qt 用於 Python 的綁定,算是生產力很高的方案
在前公司經常是使用 Python 2.7 + PySide 做圖形介面程式,再用 PyInstaller 打包成執行檔提供給同仁使用

此外我記得 Visual Studio Community 已經是功能齊備的免費版本,應該不會用到什麼開發成本才是

iknowlab

  • SA 苦力組
  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
既然 darkranger 兄這麼建議,我是一定會花時間看看 Python 的。
其實 Qt 也是要版權的,逛 Qt 的時候下載了 Enterprise 評估版,就有人打電話來關心了。
Visual Studio 應該也有類似的政策,真正上線後還是要買足版權的。
用 Visual Studio 與後續的資料庫、硬體費用,還有跨平台的能力,也是我要考量的。
當然也有人說,搞微軟,生意才多、才大,但是我認為還沒長大之前,應該就會先陣亡了。


darkranger

  • 榮譽學長
  • 俺是博士!
  • *****
  • 文章數: 1338
    • 檢視個人資料
    • http://darkranger.no-ip.org
授權部份建議您可以研究看看具體的內容再做考量
以 Qt 為例,它是採用雙授權模式,其中 LGPL 無須付費
若未修改到 Qt 的原始碼也不用將應用程式的原始碼開放出來

目前微軟對於 Visual Studio 的經營態度已經有很大的轉變,您可能不需要購買任何方案就能夠滿足需求
除此之外,雖然談跨平台開發,照理講應該會期望整個工作流程都是基於跨平台的工具之上
但就實例上來說,還是有很多跨平台軟體是利用 Visual Studio 來建構其 Windows 版本:
https://developer.mozilla.org/en-US/docs/Simple_Firefox_build/Windows_Firefox_build
https://www.chromium.org/developers/how-tos/build-instructions-windows

iknowlab

  • SA 苦力組
  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
授權部分還真的是每家都很難搞懂。
既然都有「幫忙版」,我都會來試試。
這個 Visual Studio 實在龐大,排後面研究!

研究一下午這個 PyQt,也順利執行範例程式了。PySide 應該是功成身退了。
最後就是去下載 Python3.4.1 + PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1 安裝好,即可點選 .py 的程式。

現在還沒搞懂,如果再灌入 qt-opensource-windows-x86-mingw492-5.5.1 會與 PyQt 如何結合應用。因為我的 Qt 開不起來了!

明天繼續。

iknowlab

  • SA 苦力組
  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
研究幾天,可以下結論了:

綠色軟體作法:初學者適用,使用 Python 語言
 1、下載安裝 Python3.4.3   PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1
  - 為了搭配 PyQt 的版本,Python 選 3.4 版
  - Python download https://www.python.org/downloads/release/python-343/
  - PyQt download https://www.riverbankcomputing.com/software/pyqt/download5
  - 注意挑選 32位元 或 64位元,因為與最後產出的 exe 檔有關
  - 安裝 Python 時,注意在 Customize Python 時,要將最後一項「Add python.exe to path」挑選進來,不然裝好後要去自行添加 path 變數內容。
 2、加裝 PyInstaller
  - 命令提示字元視窗內執行 pip install pyinstaller
 3、選個範例來玩玩 C:\Python34\Lib\site-packages\PyQt5\examples\opengl\2dpainting.py
  - 檔案總管中直接點選即可看到雙螺旋 Qt圖(可測試 OpenGL 效能),還有一個命令提示字元黑視窗先出來,這是系統內定以 C:\Python34\python.exe 來執行的
  - 如果改把 .py 關連到 C:\Python34\pythonw.exe 來執行,就不會出現命令提示字元黑視窗
 4、利用 pyinstaller 產生整套綠色程式
  - 命令提示字元視窗內,切換目錄到 C:\Python34\Lib\site-packages\PyQt5\examples\opengl ,執行 pyinstaller -w 2dpainting.py
  - 會生出 build dist 二資料匣
  - 最後我們要的綠色套件就是 C:\Python34\Lib\site-packages\PyQt5\examples\opengl\dist\2dpainting 全部
  - C:\Python34\Lib\site-packages\PyQt5\examples\opengl\dist\2dpainting\2dpainting,exe 就是我們要的主執行檔

軟體套件發行的方法:大型專案開發適用,使用 C++ 語言
 1、下載 Qt5.5
  - 網頁 http://www.qt.io/download-open-source/#section-2
  - 找 Windows Host 中的 Qt 5.5.1 for Windows 32-bit (MinGW 4.9.2, 1.0 GB)  只有 32位元版
   - 檔案:qt-opensource-windows-x86-mingw492-5.5.1.exe
 2、下載 Qt Installer Framework
  - 網頁 http://www.qt.io/download-open-source/#section-2
  - 找 Other downloads 中的 Qt Installer Framework
   - 檔案:Qt Installer Framework Opensource 2.0.1.exe
 3、安裝 qt-opensource-windows-x86-mingw492-5.5.1.exe
 4、安裝 Qt Installer Framework Opensource 2.0.1.exe
 5、開啟 Qt Creator (Community)
 6、開啟現有專案
  - C:\Qt\Qt5.5.1\Examples\Qt-5.5\opengl\2dpainting\2dpainting.pro
  - 按下 Configure Project ,會生一個 C:\Qt\Qt5.5.1\Examples\Qt-5.5\opengl\2dpainting\2dpainting.pro.user 以後就不會再問了
  - 建置 -> 執行(或是按下左下方的綠色 Play 按鈕)
  - 會在 C:\Qt\Qt5.5.1\Examples\Qt-5.5\opengl\build-2dpainting-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug 生出我們要的 2dpainting.exe
 7、把他 copy 出來,或是把其他的 *.o *.cpp 殺了
 8、開一個命令提示字元視窗,加持 Qt 要用的 path
  - 直接執行 C:\Windows\System32\cmd.exe /A /Q /K C:\Qt\Qt5.5.1\5.5\mingw492_32\bin\qtenv2.bat
  - 或 下指令 set PATH=C:\Qt\Qt5.5.1\5.5\mingw492_32\bin;C:\Qt\Qt5.5.1\Tools\mingw492_32\bin;%PATH%
  - 或點選開始選單裡的 Qt 5.5.1 > 5.5 > MinGW 4.9.2 (32-bit) > Qt 5.5 for Desktop (MinGW 4.9.2 32 bit) 項目
 9、切換到專案發佈的目錄: cd C:\Qt\Qt5.5.1\Examples\Qt-5.5\opengl\build-2dpainting-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug
10、執行 windeployqt 2dpainting.exe ,幫我們帶出 DLL 們
11、這整個 C:\Qt\Qt5.5.1\Examples\Qt-5.5\opengl\build-2dpainting-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug 就是綠色套件了
12、其實從項次 7 開始,我研究了二天,終於看到異國年輕人的教材,聽得半懂,看得全懂,有興趣可以去看看 Tutorial Qt Installer Framework https://youtu.be/pXRwgEP_q-Y
13、最後就是用 Qt Installer Framework 去打包成安裝檔,詳解請閱聽上述 youtube 影片

這樣,我就可以開始拼湊範例程式,開發我的「桌面應用程式」了。或許「手機應用程式」也能陸續完成。

誰對此開發應用有興趣啊?舉手喊個「有」,可來參與接下來我會辦的讀書會模式的研討聚會。
誰是箇中好手啊!要不要來開課協助我進步,學費是一定要支付的。

P.S.
前天寫的 Qt 開不起來,是指 Qt Creator (Community) 這個開發環境整個沒反應。
最後由「事件檢視器」看到一個程式出錯,是 Intel 的 Onboard 顯示驅動相關程式。<- 不研究
我把放在 C:\Windows\SysWOW64 裡面那支出錯的程式搬走,就可以正常開啟 QtCreator 了

darkranger

  • 榮譽學長
  • 俺是博士!
  • *****
  • 文章數: 1338
    • 檢視個人資料
    • http://darkranger.no-ip.org
  - 如果改把 .py 關連到 C:\Python34\pythonw.exe 來執行,就不會出現命令提示字元黑視窗
若將副檔名命名為 *.pyw,則也有相同的效果

4、利用 pyinstaller 產生整套綠色程式
  - 命令提示字元視窗內,切換目錄到 C:\Python34\Lib\site-packages\PyQt5\examples\opengl ,執行 pyinstaller -w 2dpainting.py
  - 會生出 build dist 二資料匣
  - 最後我們要的綠色套件就是 C:\Python34\Lib\site-packages\PyQt5\examples\opengl\dist\2dpainting 全部
  - C:\Python34\Lib\site-packages\PyQt5\examples\opengl\dist\2dpainting\2dpainting,exe 就是我們要的主執行檔
如果不喜歡「內臟四溢」的感覺,可以考慮加上 -F 參數打包成更大的單一執行檔

iknowlab

  • SA 苦力組
  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
darkranger 果然 Qt 經驗豐富,希望有機會可面授機宜。

1. 因為我發現 Python3.4.1 並沒有將 .pyw 連結到 pythonw.exe,Python3.5 我是有試過改 .pyw,或許是某種原因 pythonw.exe 的關連被破壞,不過,真正 .pyw 可以不出現的「黑視窗」的原因是關連到 pythonw.exe,也就是如果你把 .py 改關連到 pythonw.exe 一樣也不會出現可用來 debug 的「 黑視窗」。另外還有將 .py 加密為 .pyc 的議題,畢竟我不希望還要在 USER 端安裝 Python / PyQt,所以沒放在結論裡。

2. 如果程式不大,可以採用 -F 簡化。我的電腦大多還是 Pentium4+WinXP_32 / Dual Core+Win7_64,或是有時用 VMWare Player 虛擬機跑 WinXP_32,-F 參數產生的大執行檔(範例程式 2dpainting.py 由 1.5mb 變成 26mb),每次打包、搬移、執行都有礙效率(範例程式 2dpainting.py 打包約多花 15秒,二次打包約為 1秒對16秒 ; 新版程式只要搬動主程式 ; 執行約為0.5秒與2秒之差),系統龐大後更不敢想像,想說大家應該對「綠色套件」不陌生,用資料匣來管理應該也很習慣。

darkranger

  • 榮譽學長
  • 俺是博士!
  • *****
  • 文章數: 1338
    • 檢視個人資料
    • http://darkranger.no-ip.org
其實我也只是因工作需求有摸過一點而已....

PyInstaller 如果透過 UPX 打包,則打包的效率跟容量應該都會有所改善(沒有認真比對過)
一般而言,就是另外去下載 upx.exe,然後跟 PyInstaller 放置於相同目錄下
PyInstaller 若偵測到 UPX 存在,預設就會使用 UPX 來打包

smartman

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
我特別註冊為了回覆這篇文章,
感謝你把QT的windows deploy方法貼在網路上。解決了我搞兩天的問題。
--------


  - 直接執行 C:\Windows\System32\cmd.exe /A /Q /K C:\Qt\Qt5.5.1\5.5\mingw492_32\bin\qtenv2.bat
  - 或 下指令 set PATH=C:\Qt\Qt5.5.1\5.5\mingw492_32\bin;C:\Qt\Qt5.5.1\Tools\mingw492_32\bin;%PATH%
  - 或點選開始選單裡的 Qt 5.5.1 > 5.5 > MinGW 4.9.2 (32-bit) > Qt 5.5 for Desktop (MinGW 4.9.2 32 bit) 項目
 9、切換到專案發佈的目錄: cd C:\Qt\Qt5.5.1\Examples\Qt-5.5\opengl\build-2dpainting-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug
10、執行 windeployqt 2dpainting.exe ,幫我們帶出 DLL 們
11、這整個 C:\Qt\Qt5.5.1\Examples\Qt-5.5\opengl\build-2dpainting-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug 就是綠色套件了
12、其實從項次 7 開始,我研究了二天,終於看到異國年輕人的教材,聽得半懂,看得全懂,有興趣可以去看看 Tutorial Qt Installer Framework https://youtu.be/pXRwgEP_q-Y
13、最後就是用 Qt Installer Framework 去打包成安裝檔,詳解請閱聽上述 youtube 影片

這樣,我就可以開始拼湊範例程式,開發我的「桌面應用程式」了。或許「手機應用程式」也能陸續完成。

誰對此開發應用有興趣啊?舉手喊個「有」,可來參與接下來我會辦的讀書會模式的研討聚會。
誰是箇中好手啊!要不要來開課協助我進步,學費是一定要支付的。

« 上次編輯: 2016-02-20 13:50 由 smartman »

iknowlab

  • SA 苦力組
  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
取之於網,反饋於網,網中人應如是。

後來,我又持續利用 PyQt 模擬開發了一套老舊管理系統的部分功能(首頁主選單、次頁選單、資料表列、輸入稽核控制、資料 CRUD、套頁單頁印表、報表印表),但是客戶暫無改版意願(應該是不想跟我簽定長期開發合約)。目前暫沒案子可發揮,也就收到抽屜裡,伺機而動。

由硬體、網路、軟體、系統、網站…等諸多資訊工程領域。這件事補足了我「桌面應用軟體開發」這項能力的缺口,雖然資訊世界還很大,但我覺得已經圓滿。

整個開發過程,當然不免要遇到重重關卡,最後都一一突破,一些手法也會想與同好交流。時過四個月,目前並未有可交流的同好出現。

程式工具確立後,接著研究一個想了十幾年都不知如何處理的「版本控制」議題(因為我不是科班出身)。偏 Linux 陣營的我,當然採用最夯的 GIT 來學習,目前也算順利找到適合的應用工具,搞懂 50% 實作方法。

還是要有「營業收入」來支撐研發的。過年期間,閒閒在家,改研究 Drupal 模組開發,我認為他蠻適合用來製作「工程工時填報」的資料收集系統,這是我已確立可收到開發費的案子。

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7310
    • 檢視個人資料
我也是不喜歡在Windows上安裝有的沒有的.

Windows平台,你可以考慮用WinPython,它是自解壓縮檔,解在某個目錄就可以用,
可利用環境變數切換目錄位置,有不同Python需要切換還滿方便的.

我試過2.7跟3.4的,在Win7上都可以跑,但3.5的就怪怪的,用pip裝套件(如: 美麗肥皂)也Ok,
它有附一些UI開發及管理工具,這個就看個人需不需要.

它會在Users的家目錄,產生一個.python或.python3的目錄放一些History指令內容,
假如你要清除乾淨,記得也要清這個目錄.

因為我都是Parsing用途,所以沒有閞發到有UI的介面,
假如你有發現什麼簡易製作MENU或UI套件方便可用,可以交流一下.

iknowlab

  • SA 苦力組
  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
看起來 duncanlo 兄的建議與我說的 deploy 不太一樣。

抱歉無法仔細研究 WinPython,在 WinPython 官網 http://winpython.sourceforge.net/ 有看到 Qt 的圖示,也就表示 WinPython 應該是一個被重新包裝過的 Python Interpretor。

Deploy 的目的,是要將開發好的系統傳遞出去:
 - 不要經由安裝程序,直接使用「綠色套件」
 - 希望以最小的容量發送,以便加速傳遞
 - 不要被看到程式原始碼

Qt 本身就是一個設計 UI 的函式庫,附有個名為 Creator 的 IDE,但他是用 C++語法寫程式。(我沒多深入研究)
PyQt 是用 Python 語法寫程式的 UI 的函式庫,所以一定要安裝 Python。
Qt 或 PyQt 套件都有 Qt Designer 這個 UI 編輯工具,可以生成 .ui 檔(XML 格式)
PyQt 有指令 pyuic5.bat 將 .ui 轉成 .py

所以要採 Python 語法,利用 PyQt UI 函式庫,來開發 Windows 桌面應用程式,還要找一個 IDE,會較事半功倍。我最後選了有 Community 版的 PyCharm ( https://www.jetbrains.com/pycharm/download/ ),也找到了免費使用一年完整專業版的方法(未來若有收費專案來到,我會付費買此 IDE)。

最後再利用 pyinstaller 來生成綠色套件,deploy 給任何沒安裝 Python、PyQt 的 Windows 電腦使用。

我在開發過程中,是有紀錄了一些「過關斬將」的手法,但要完整寫出來成為「講義」,還真會累死人,除非有「滿意稿費」。所以,若有正在用 PyQt 開發系統的同好,可以提出卡關疑問,大家再來針對該狀況研討。

要討論開發系統的細節,是相當鉅細靡遺的,並不適合聚會分享;若只是分享、研討「心路歷程」或許還有可能適合。


Windows平台,你可以考慮用WinPython,它是自解壓縮檔,解在某個目錄就可以用,
可利用環境變數切換目錄位置,有不同Python需要切換還滿方便的.

因為我都是Parsing用途,所以沒有閞發到有UI的介面,
假如你有發現什麼簡易製作MENU或UI套件方便可用,可以交流一下.