go语言gui的库andlabs/ui官方代码实例 - 简书
文章推薦指數: 80 %
今天我们记录andlabs/ui库的学习历程,我们看一下官方的例子,因为它教程比较少,只能看官方的案例,百度看介绍的时候功能也可以。
go语言gui的库andlabs/ui官方代码实例今天我们记录andlabs/ui库的学习历程,我们看一下官方的例子,因为它教程比较少,只能看官方的案例,百度看介绍的时候功能也可以。
准备用它写一个自动升级用的小工具,两三个窗口,以为能搞定的。
GoGet安装库:
gogetgithub.com/andlabs/libui
gogetgithub.com/andlabs/ui
官方代码实例:
//12august2018
//+buildOMIT
packagemain
import(
"github.com/andlabs/ui"
_"github.com/andlabs/ui/winmanifest"
)
varmainwin*ui.Window
funcmakeBasicControlsPage()ui.Control{
vbox:=ui.NewVerticalBox()
vbox.SetPadded(true)
hbox:=ui.NewHorizontalBox()
hbox.SetPadded(true)
vbox.Append(hbox,false)
hbox.Append(ui.NewButton("Button"),false)
hbox.Append(ui.NewCheckbox("Checkbox"),false)
vbox.Append(ui.NewLabel("Thisisalabel.Rightnow,labelscanonlyspanoneline."),false)
vbox.Append(ui.NewHorizontalSeparator(),false)
group:=ui.NewGroup("Entries")
group.SetMargined(true)
vbox.Append(group,true)
group.SetChild(ui.NewNonWrappingMultilineEntry())
entryForm:=ui.NewForm()
entryForm.SetPadded(true)
group.SetChild(entryForm)
entryForm.Append("Entry",ui.NewEntry(),false)
entryForm.Append("PasswordEntry",ui.NewPasswordEntry(),false)
entryForm.Append("SearchEntry",ui.NewSearchEntry(),false)
entryForm.Append("MultilineEntry",ui.NewMultilineEntry(),true)
entryForm.Append("MultilineEntryNoWrap",ui.NewNonWrappingMultilineEntry(),true)
returnvbox
}
funcmakeNumbersPage()ui.Control{
hbox:=ui.NewHorizontalBox()
hbox.SetPadded(true)
group:=ui.NewGroup("Numbers")
group.SetMargined(true)
hbox.Append(group,true)
vbox:=ui.NewVerticalBox()
vbox.SetPadded(true)
group.SetChild(vbox)
spinbox:=ui.NewSpinbox(0,100)
slider:=ui.NewSlider(0,100)
pbar:=ui.NewProgressBar()
spinbox.OnChanged(func(*ui.Spinbox){
slider.SetValue(spinbox.Value())
pbar.SetValue(spinbox.Value())
})
slider.OnChanged(func(*ui.Slider){
spinbox.SetValue(slider.Value())
pbar.SetValue(slider.Value())
})
vbox.Append(spinbox,false)
vbox.Append(slider,false)
vbox.Append(pbar,false)
ip:=ui.NewProgressBar()
ip.SetValue(-1)
vbox.Append(ip,false)
group=ui.NewGroup("Lists")
group.SetMargined(true)
hbox.Append(group,true)
vbox=ui.NewVerticalBox()
vbox.SetPadded(true)
group.SetChild(vbox)
cbox:=ui.NewCombobox()
cbox.Append("ComboboxItem1")
cbox.Append("ComboboxItem2")
cbox.Append("ComboboxItem3")
vbox.Append(cbox,false)
ecbox:=ui.NewEditableCombobox()
ecbox.Append("EditableItem1")
ecbox.Append("EditableItem2")
ecbox.Append("EditableItem3")
vbox.Append(ecbox,false)
rb:=ui.NewRadioButtons()
rb.Append("RadioButton1")
rb.Append("RadioButton2")
rb.Append("RadioButton3")
vbox.Append(rb,false)
returnhbox
}
funcmakeDataChoosersPage()ui.Control{
hbox:=ui.NewHorizontalBox()
hbox.SetPadded(true)
vbox:=ui.NewVerticalBox()
vbox.SetPadded(true)
hbox.Append(vbox,false)
vbox.Append(ui.NewDatePicker(),false)
vbox.Append(ui.NewTimePicker(),false)
vbox.Append(ui.NewDateTimePicker(),false)
vbox.Append(ui.NewFontButton(),false)
vbox.Append(ui.NewColorButton(),false)
hbox.Append(ui.NewVerticalSeparator(),false)
vbox=ui.NewVerticalBox()
vbox.SetPadded(true)
hbox.Append(vbox,true)
grid:=ui.NewGrid()
grid.SetPadded(true)
vbox.Append(grid,false)
button:=ui.NewButton("OpenFile")
entry:=ui.NewEntry()
entry.SetReadOnly(true)
button.OnClicked(func(*ui.Button){
filename:=ui.OpenFile(mainwin)
iffilename==""{
filename="(cancelled)"
}
entry.SetText(filename)
})
grid.Append(button,
0,0,1,1,
false,ui.AlignFill,false,ui.AlignFill)
grid.Append(entry,
1,0,1,1,
true,ui.AlignFill,false,ui.AlignFill)
button=ui.NewButton("SaveFile")
entry2:=ui.NewEntry()
entry2.SetReadOnly(true)
button.OnClicked(func(*ui.Button){
filename:=ui.SaveFile(mainwin)
iffilename==""{
filename="(cancelled)"
}
entry2.SetText(filename)
})
grid.Append(button,
0,1,1,1,
false,ui.AlignFill,false,ui.AlignFill)
grid.Append(entry2,
1,1,1,1,
true,ui.AlignFill,false,ui.AlignFill)
msggrid:=ui.NewGrid()
msggrid.SetPadded(true)
grid.Append(msggrid,
0,2,2,1,
false,ui.AlignCenter,false,ui.AlignStart)
button=ui.NewButton("MessageBox")
button.OnClicked(func(*ui.Button){
ui.MsgBox(mainwin,
"Thisisanormalmessagebox.",
"Moredetailedinformationcanbeshownhere.")
})
msggrid.Append(button,
0,0,1,1,
false,ui.AlignFill,false,ui.AlignFill)
button=ui.NewButton("ErrorBox")
button.OnClicked(func(*ui.Button){
ui.MsgBoxError(mainwin,
"Thismessageboxdescribesanerror.",
"Moredetailedinformationcanbeshownhere.")
})
msggrid.Append(button,
1,0,1,1,
false,ui.AlignFill,false,ui.AlignFill)
returnhbox
}
//设置UI界面
funcsetupUI(){
mainwin=ui.NewWindow("官方案例qqhd.me",640,480,true)
mainwin.OnClosing(func(*ui.Window)bool{
ui.Quit()
returntrue
})
ui.OnShouldQuit(func()bool{
mainwin.Destroy()
returntrue
})
tab:=ui.NewTab()
mainwin.SetChild(tab)
mainwin.SetMargined(true)
tab.Append("BasicControls",makeBasicControlsPage())
tab.SetMargined(0,true)
tab.Append("NumbersandLists",makeNumbersPage())
tab.SetMargined(1,true)
tab.Append("DataChoosers",makeDataChoosersPage())
tab.SetMargined(2,true)
mainwin.Show()
}
funcmain(){
ui.Main(setupUI)
}
运行效果图:
推荐阅读更多精彩内容等待有些事物对于一些人来说是如此的特殊,特殊到他渴望了好久好久才能得到...得到的那一刻,一切都值了...Gakki喲阅读50评论0赞0青岛的布朗尼我知道我一定会写的,虽然我显得那么不以为意地随意。
青岛的布朗尼,是巧克力味的,它一定是巧克力味道的。
巧克力颗粒混...枝楼阅读251评论2赞52019-04-11人和人相遇,靠的是一点缘分。
人和人相处,靠的是一点诚意。
思念别人是一种温馨。
被别人思念是一种幸福,最难的是相知,...风云在线_a136阅读36评论0赞2抽奖1赞2赞赞赏更多好文
延伸文章資訊
- 1ui - pkg.dev
github.com/andlabs/ui ... ui: platform-native GUI library for Go ... Main initializes package ui,...
- 2andlabs/ui: Platform-native GUI library for Go. - GitHub
This is a library that aims to provide simple GUI software development in Go. It is based on my l...
- 3Golang NewArea示例
Golang NewArea - 已找到6个示例。这些是从开源项目中提取的最受好评的github.com/andlabs/ui.NewArea现实Golang示例。您可以评价示例,以帮助我们提高...
- 4andlabs UI - Cross-platform Native UIs - O'Reilly Media
Like the Walk API we explored in the previous chapter, andlabs UI aims to create a Go API on top ...
- 5Golang NewVerticalBox Examples
Golang NewVerticalBox - 7 examples found. These are the top rated real world Golang examples of g...