跨平臺Golang GUI - GoVCL -簡介

GoVCL(全稱:Go Language Visual Component Library)是一款小巧的跨平臺原生golang GUI庫,底層綁定自Lazarus的GUI庫。

前往官網

初衷

項目最初來源於自己的gofmx實驗項目,當初做gofmx項目遇到了些問題,後來不知道怎麼的就放棄了。時隔8個多月後想起來試試移植VCL,一開始並沒有打算做完整的,只是實驗下,偶然間解決了之前做gofmx的遇到的問題,然後就一發不可收拾,撿起以前gofmx的生成器改爲govcl的,一路也不是這麼順暢,踩坑很多。慢慢的隨着各種需求又加入了基於LCL組件的跨平臺方案、獨立的GOVCL UI設計器等。從項目發佈到現已經一年多了,涵蓋了Lazarus LCL大部分的標準組件, 完善度也越來越高。 依靠Delphi/Lazarus這兩棵大樹使得govcl變得簡單易用,穩定性也不差。

爲什麼要自己做

  現在開源的go UI庫也不少,自己也嘗試簡單使用過go-qt、lxn/walk、andlabs/ui、go-sciter等,但都不如意,缺失的太多。有些處在停止更新,有些二進制依賴太多太臃腫、有些組件太少、有些非原生、有些不易使用等等各種問題。基於這些原因我決定自己造個輪子。govcl的目標爲 簡單 + 小巧 + 原生


學習govcl是否需要懂Pascal語言?

不需要懂Pascal語言,僅僅只需要了解控件的使用方法和相關的屬性及事件之類的。除非你需要修改libvcl或者liblcl的源代碼纔會涉及到Pascal語言。


優/缺點
  • 優點

   UI庫小,用UPX壓縮下也就1M-2M大小的,無依賴,簡單,特別是加上使用可視化的設計器或者res2go工具能快速生成UI,免去了手動創建的煩惱。控件多,屬性多,事件多,對於一些工具開發足以。

  • 缺點

   因爲UI庫全是原生組件,那麼要做到像DirectUI那樣的就是很麻煩的事了,所以這算是govcl現在的一大遺憾吧。一些比較簡單的美化界面還是相對容易做到。


Go版本建議

當前開發基於go1.9.2版本,從govcl 1.2.0開始,最低只支持go1.9。 v1.2.0之前的已測在go1.5也可編譯運行

另外由於govcl項目太大已經不適合使用go 32位的編譯器了編譯代碼了,建議使用go 64位的編譯器編譯,否則在編譯的時候就容易造成內存溢出。

govcl主要代碼已經達到13萬多行,例程差不多3萬行,libvcl+liblcl+res2go約20多萬行。


已測試的各個系統平臺情況
系統 已經測試系統版本 說明
Windows Windows XP、Windows7、Window10 目前只對Windows Vista之上系統比較友好,對Windows XP
有些問題。
主要是因爲uxtheme.dll引起的,相關解決方法見FAQ中的
Linux Ubuntu 16.04、Linux Mint 17.1、Linux Mint 19、Deepin 15.5
MacOS macOS 10.12、10.13 注:從macOS 10.14後不再支持32位應用,Lazarus從2.0開始已經轉向cocoa庫了,目前使用的還算可以。
Raspberry pi 使用CodeTyphon交叉編譯爲arm格式。
暫發現Menu組件有問題,其他似乎沒啥大問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章