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

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

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群:1006366459

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