這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1,關於gui
golang 還真的有gui的開發架構。在mac上面好像比較簡單。直接用就好。
不知道在其他平台上面咋樣。
github項目地址:
https://github.com/andlabs/ui/wiki/Getting-Started
起重核心還是使用了:https://github.com/andlabs/libui
在github上面加星的還是挺多的。非常的活躍的項目。
doc文檔:
https://godoc.org/github.com/andlabs/ui
其他的想好想也沒有啥了。感覺上wxWidgets應該也是跨平台的。
https://github.com/dontpanic92/wxGo 也有一個哥們做的封裝。
但是看了下加星的比較少呢。還是用andlabs/ui的吧。
2,andlabs gui的hello world
安裝:
go get github.com/andlabs/ui
package mainimport ( "github.com/andlabs/ui" "fmt")func main() { err := ui.Main(func() { name := ui.NewEntry() button := ui.NewButton("測試") greeting := ui.NewLabel("") box := ui.NewVerticalBox() box.Append(ui.NewLabel("輸入姓名:"), false) box.Append(name, false) box.Append(button, false) box.Append(greeting, false) //建立window視窗。並設定長寬。 window := ui.NewWindow("第一個應用程式。", 600, 500, false) //mac不支援置中。 //https://github.com/andlabs/ui/issues/162 window.SetChild(box) button.OnClicked(func(*ui.Button) { //可以直接列印日誌。 fmt.Println("get name :", name.Text()) greeting.SetText("Hello, " + name.Text() + "!") }) window.OnClosing(func(*ui.Window) bool { ui.Quit() return true }) window.Show() }) if err != nil { panic(err) }}
感覺上andlabs ui 比較簡單,只能做些最基本的東西。
做個簡單的還行,要是複雜的就不行了。
看了下原始碼不多。使用了封裝好的libui的庫。支援windows mac linux系統。
因為是c寫的感覺上和go結合的還是挺緊密的。
3,wxGo
安裝 wxGo。
在國內要安裝 https://github.com/dontpanic92/wxGo 項目不然 andlabs 快。
經常會報錯,逾時。主要是因為這個庫太大了,有 91 MB。
而且庫支援 windows linux mac 所以lib是三個庫都有。
最好的辦法是直接下載 zip 檔案,然後解壓縮到 $GOPATH/src/github.com/dontpanic92/wxGo 這個目錄下面然後安裝。
go install github.com/dontpanic92/wxGo/wx
會報錯一些warning 資訊。但是可以安裝過去。
然後就可以跑測試下demo了。
package mainimport "github.com/dontpanic92/wxGo/wx"func main() { wx.NewApp() f := wx.NewDialog(wx.NullWindow, -1, "Hello World") bSizer := wx.NewBoxSizer(wx.VERTICAL) checkBox := wx.NewCheckBox(f, wx.ID_ANY, "Check Me!", wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(checkBox, 0, wx.ALL|wx.EXPAND, 5) textCtrl := wx.NewTextCtrl(f, wx.ID_ANY, "", wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(textCtrl, 0, wx.ALL|wx.EXPAND, 5) f.SetSizer(bSizer) f.Layout() f.ShowModal() f.Destroy()}
代碼裡麵包括了好結果sample。aui.
一個超級複雜的介面。就是wxWidgets 的風格呢。
思路也是使用 http://www.swig.org/
swig的思路j進行封裝的。作者也說明了這點。
工程也是個龐大的過程。把3 個平台的lib庫都編譯了。
4,總結
本文的原文串連是: http://blog.csdn.net/freewebsys/article/details/60141345 未經博主允許不得轉載。
博主地址是:http://blog.csdn.net/freewebsys
做個簡單的測試載入器啊。做個服務檢查的工具啊,介面的測試載入器啊。
簡單的可以使用 andlibs ui,因為簡單點。lib庫小安裝,開發方便。
要是開發一個複雜的項目可以使用 wxGo 類庫豐富。
想咋開發都可以。