Golang的Gui編程及解決方案

有時間沒更新這裏了,發個文章湊個數。一般還是更新在自己家裏的博客,見這裏吧 http://i.scwy.net/go/2020/052212-gui/

ps: 還是Hugo(火鍋)建立的自家博客簡單方便,想到哪裏寫到哪裏,隨時更新,隨時補充,即使有時候思路跳躍或者語無倫次。博客還是主要給自己看的,語言組織就差些。

---------------------------------------

說到golang的gui,就會想到:它不是爲這個而生的。

但這卻是實際的需求,還要求程序員再去學一個語言去前端GUI,那確實還是不太友好的。所以還是趨向於在Golang本身解決。

於是,fyne,qt,walk找了一圈,問題在於:

  1. 配置開發環境麻煩:go的使用者應該是潔癖居多吧,完全不符合即用即裝的原則。

  2. 居然不支持中文輸入:fyne是支持中文顯示的,但你不支持中文輸入,拿你有何用?

  3. 跨平臺性弱:編譯一個跨平臺版本還有n多手續要辦,這也不是go的風格

  4. 只支持Win:都不知道說什麼好了

  5. 開發/支持:開發者的不斷更新,支持者衆多,都是後續改進的保證。

  6. 需要某某環境支持:例如chrome瀏覽器支持

  7. 需要衆多的周邊文件:配置文件、其它程序、自開發的程序

  8. 收費:這個…

現在的解決方案

  1. HTML即瀏覽器作爲前臺GUI

只是對瀏覽器的適配是比較麻煩的事,一般都以Firefox和Chrome爲主,IE這種自以爲是的標準,只能捨棄。

  1. Godot大材小用做GUI

這是最近研究的方案。godot具有跨平臺,乾淨的特點。它原本是遊戲開發引擎,拿來作爲前端GUI算是大材小用。另外,它也可以導出爲H5的程序(WebAssembly)。

雖然最終還是沒有在Go本身找到解決方法,但這個對我是相對比較實際的。


這裏做了一個示例,想通過示例來驗證可行性,沒有具體的實現功能。詳情也可以看這裏

 

導出後,有幾個文件:

  1. GUI主程序
  2. pck庫文件 (素材等資源包,godot標準輸出)
  3. set.cfg (程序的配置文件)
  4. theme.tres (樣式文件)
  5. yahei.ttf (字體文件)
  6. login_bg.jpg (背景圖)
  7. server後臺服務程序 (golang完成的一些後臺支持功能)

說明:

  1. 現在是將theme.tres,bg.jpg寫死到程序中的,當然應該搬到set.cfg中。
  2. GUI主程序也可以默認帶一套樣式及字體,現在沒有4.5.6也能正常運行,只是沒有漢字字庫可是比較鬱悶的樣子。
  3. 若UPX,可能導致運行程序與配套文件不在同一個目錄,從而導致樣式走樣。

下載:

這裏打包了Linux64和Win64的版本可以測試,38MB。

Golang後臺程序很簡單,直接給了源代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章