Skip to content

Select

A drop-down selection widget that allows users to choose a single option from a list.

Show Code
package main
import (
"fmt"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("Select Widget")
// Label to display selected value
label := widget.NewLabel("No item selected")
// Create a select dropdown
selectWidget := widget.NewSelect(
[]string{"Red", "Green", "Blue"},
func(selected string) {
if selected == "" {
label.SetText("No item selected")
} else {
label.SetText(fmt.Sprintf("You chose: %s", selected))
}
},
)
// Set a placeholder text
selectWidget.PlaceHolder = "Choose a color"
// Layout
content := container.NewVBox(
label,
selectWidget,
)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(300, 200))
myWindow.ShowAndRun()
}
Show Code
package main
import (
"fmt"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("Select Entry")
// Label to display chosen/typed value
label := widget.NewLabel("No value selected")
// Create SelectEntry with some options
selectEntry := widget.NewSelectEntry([]string{"Apple", "Banana", "Cherry"})
// Handle changes (both selecting and typing)
selectEntry.OnChanged = func(value string) {
if value == "" {
label.SetText("No value selected")
} else {
label.SetText(fmt.Sprintf("You chose/typed: %s", value))
}
}
// Optional: set placeholder text
selectEntry.SetPlaceHolder("Choose or type a fruit")
// Layout
content := container.NewVBox(
label,
selectEntry,
)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(300, 200))
myWindow.ShowAndRun()
}
Show Code
package main
import (
"fmt"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/data/binding"
"fyne.io/fyne/v2/widget"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("Select With Data")
// Create bound string for selected option
selected := binding.NewString()
selected.Set("Green") // default value
// Label to reflect current selection
label := widget.NewLabel("Selected: Green")
// Create Select dropdown bound to data
selectWidget := widget.NewSelectWithData(
[]string{"Red", "Green", "Blue"},
selected,
)
// Listen for changes in bound data
selected.AddListener(binding.NewDataListener(func() {
val, _ := selected.Get()
label.SetText(fmt.Sprintf("Selected: %s", val))
}))
// Layout
content := container.NewVBox(
label,
selectWidget,
)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(300, 200))
myWindow.ShowAndRun()
}