分享
  1. 首页
  2. 文章

Golang-Gui 第三方库andlabs/ui的使用和效果zh

yanyuxuan · · 8041 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

github上有很多第三方GUI,本文以anblabs/ui库为例,支持跨平台,也比较容易上手,简单介绍下它的用法和最终展示效果。

代码奉上,引包copy代码就直接可以运行起来,部分电脑可能需要下载gcc:

package main
import (
  "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)
  }
}


最终测试效果展示:


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
8041 次点击
2 回复 | 直到 2020年03月13日 11:33:10
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏