go语言gui的库andlabs/ui官方代码实例 - 简书

文章推薦指數: 80 %
投票人數:10人

今天我们记录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赞赞赏更多好文



請為這篇文章評分?