這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
github上有很多第三方GUI,本文以anblabs/ui庫為例,支援跨平台,也比較容易上手,簡單介紹下它的用法和最終展示效果。
代碼奉上,引包copy代碼就直接可以運行起來,部分電腦可能需要下載gcc:
package mainimport ( "github.com/andlabs/ui")func main() { err := ui.Main(func() { input := ui.NewEntry() input.SetText("this is input element") input.LibuiControl() spinbox := ui.NewSpinbox(50, 150) spinbox.SetValue(55) slider := ui.NewSlider(0, 100) slider.SetValue(10) processbar := ui.NewProgressBar() processbar.SetValue(50) combobox := ui.NewCombobox() combobox.Append("select one") combobox.Append("select two") combobox.Append("select three") combobox.SetSelected(2) checkbox1 := ui.NewCheckbox("GoLang") checkbox1.SetChecked(true) checkbox2 := ui.NewCheckbox("C++") checkbox3 := ui.NewCheckbox("Python") checkbox4 := ui.NewCheckbox("Other") checkbox_div := ui.NewHorizontalBox() checkbox_div.Append(checkbox1, true) checkbox_div.Append(checkbox2, true) checkbox_div.Append(checkbox3, true) checkbox_div.Append(checkbox4, true) radio := ui.NewRadioButtons() radio.Append("GoLang") radio.Append("C++") radio.Append("Python") radio.Append("Other") checkbox_div.SetPadded(true) Separator := ui.NewHorizontalSeparator() Separator_label_l := ui.NewLabel("left") Separator_label_r := ui.NewLabel("right") Separator_div := ui.NewHorizontalBox() Separator_div.Append(Separator_label_l, true) Separator_div.Append(Separator, false) Separator_div.Append(Separator_label_r, true) Separator_div.SetPadded(true) datetimepicker := ui.NewDateTimePicker() //-----------------Set a single child to a new group.------------ container1 := ui.NewGroup("input(輸入框)") container1.SetChild(input) container2 := ui.NewGroup("spinbox(自設值範圍框,只能通過箭頭控制值,不能手動輸入)") container2.SetChild(spinbox) container3 := ui.NewGroup("slider(滑片)") container3.SetChild(slider) container4 := ui.NewGroup("processbar(進度條)") container4.SetChild(processbar) container5 := ui.NewGroup("checkbox(多選框)") container5.SetChild(checkbox_div) container6 := ui.NewGroup("radio(單選框)") container6.SetChild(radio) container7 := ui.NewGroup("combobox(下拉框)") container7.SetChild(combobox) container8 := ui.NewGroup("Separator(分隔字元)") container8.SetChild(Separator_div) container9 := ui.NewGroup("datetimepicker(時間選取器)") container9.SetChild(datetimepicker) //------垂直排列的容器--------- div := ui.NewVerticalBox() //------水平排列的容器 boxs_1 := ui.NewHorizontalBox() boxs_1.Append(container1, true) boxs_1.Append(container2, true) boxs_1.SetPadded(false) boxs_2 := ui.NewHorizontalBox() boxs_2.Append(container3, true) boxs_2.Append(container4, true) boxs_3 := ui.NewHorizontalBox() boxs_3.Append(container5, true) boxs_3.Append(container6, true) boxs_4 := ui.NewHorizontalBox() boxs_4.Append(container7, true) boxs_4.Append(container8, true) div.Append(boxs_1, true) div.Append(boxs_2, true) div.Append(boxs_3, true) div.Append(boxs_4, true) div.Append(container9, true) div.SetPadded(false) window := ui.NewWindow("test111", 500, 500, true) window.SetChild(div) window.SetMargined(true) window.OnClosing(func(*ui.Window) bool { //ui.Quit() return true }) window.Show() }) if err != nil { panic(err) }}
最終測試效果展示:
289 次點擊