golang 開發gui,還真有gui的架構,就是做個簡單的行

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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 類庫豐富。
想咋開發都可以。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.