有時間沒更新這裏了,發個文章湊個數。一般還是更新在自己家裏的博客,見這裏吧 http://i.scwy.net/go/2020/052212-gui/
ps: 還是Hugo(火鍋)建立的自家博客簡單方便,想到哪裏寫到哪裏,隨時更新,隨時補充,即使有時候思路跳躍或者語無倫次。博客還是主要給自己看的,語言組織就差些。
---------------------------------------
說到golang的gui,就會想到:它不是爲這個而生的。
但這卻是實際的需求,還要求程序員再去學一個語言去前端GUI,那確實還是不太友好的。所以還是趨向於在Golang本身解決。
於是,fyne,qt,walk找了一圈,問題在於:
-
配置開發環境麻煩:go的使用者應該是潔癖居多吧,完全不符合即用即裝的原則。
-
居然不支持中文輸入:fyne是支持中文顯示的,但你不支持中文輸入,拿你有何用?
-
跨平臺性弱:編譯一個跨平臺版本還有n多手續要辦,這也不是go的風格
-
只支持Win:都不知道說什麼好了
-
開發/支持:開發者的不斷更新,支持者衆多,都是後續改進的保證。
-
需要某某環境支持:例如chrome瀏覽器支持
-
需要衆多的周邊文件:配置文件、其它程序、自開發的程序
-
收費:這個…
現在的解決方案:
- HTML即瀏覽器作爲前臺GUI
只是對瀏覽器的適配是比較麻煩的事,一般都以Firefox和Chrome爲主,IE這種自以爲是的標準,只能捨棄。
- Godot大材小用做GUI
這是最近研究的方案。godot具有跨平臺,乾淨的特點。它原本是遊戲開發引擎,拿來作爲前端GUI算是大材小用。另外,它也可以導出爲H5的程序(WebAssembly)。
雖然最終還是沒有在Go本身找到解決方法,但這個對我是相對比較實際的。
這裏做了一個示例,想通過示例來驗證可行性,沒有具體的實現功能。詳情也可以看這裏
導出後,有幾個文件:
- GUI主程序
- pck庫文件 (素材等資源包,godot標準輸出)
- set.cfg (程序的配置文件)
- theme.tres (樣式文件)
- yahei.ttf (字體文件)
- login_bg.jpg (背景圖)
- server後臺服務程序 (golang完成的一些後臺支持功能)
說明:
- 現在是將theme.tres,bg.jpg寫死到程序中的,當然應該搬到set.cfg中。
- GUI主程序也可以默認帶一套樣式及字體,現在沒有4.5.6也能正常運行,只是沒有漢字字庫可是比較鬱悶的樣子。
- 若UPX,可能導致運行程序與配套文件不在同一個目錄,從而導致樣式走樣。
下載:
這裏打包了Linux64和Win64的版本可以測試,38MB。
Golang後臺程序很簡單,直接給了源代碼。