Terminal-based user interface toolkit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

50 lines
1.3 KiB

// Demo code for unicode support (demonstrates wide Chinese characters).
package main
import (
"fmt"
"code.rocketnine.space/tslocum/cview"
)
func main() {
app := cview.NewApplication()
panels := cview.NewPanels()
form := cview.NewForm()
form.AddDropDownSimple("称谓", 0, nil, "先生", "女士", "博士", "老师", "师傅")
form.AddInputField("姓名", "", 20, nil, nil)
form.AddPasswordField("密码", "", 10, '*', nil)
form.AddCheckBox("", "年龄 18+", false, nil)
form.AddButton("保存", func() {
_, option := form.GetFormItem(0).(*cview.DropDown).GetCurrentOption()
userName := form.GetFormItem(1).(*cview.InputField).GetText()
alert(panels, "alert-dialog", fmt.Sprintf("保存成功,%s %s!", userName, option.GetText()))
})
form.AddButton("退出", func() {
app.Stop()
})
form.SetBorder(true)
form.SetTitle("输入一些内容")
form.SetTitleAlign(cview.AlignLeft)
panels.AddPanel("base", form, true, true)
app.SetRoot(panels, true)
if err := app.Run(); err != nil {
panic(err)
}
}
// alert shows a confirmation dialog.
func alert(panels *cview.Panels, id string, message string) {
modal := cview.NewModal()
modal.SetText(message)
modal.AddButtons([]string{"确定"})
modal.SetDoneFunc(func(buttonIndex int, buttonLabel string) {
panels.HidePanel(id)
panels.RemovePanel(id)
})
panels.AddPanel(id, modal, false, true)
}