Select
A drop-down selection widget that allows users to choose a single option from a list.
Basic Select
Section titled “Basic Select”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()}Select Entry
Section titled “Select Entry”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()}Select With Data
Section titled “Select With Data”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()}