Skip to content

Checkbox

A checkbox displays choices in Fyne, allowing the user to pick one option from a set

Show Code
package main
import (
"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("Choices Widget")
// Create a label
label := widget.NewLabel("Not Checked!")
// Checkbox to update the label
check := widget.NewCheck("Accept T&C", func(value bool) {
if value {
label.SetText("Accepted")
} else {
label.SetText("Not checked!")
}
})
content := container.NewVBox(
label,
check,
)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(300, 150))
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("Checkbox Group Example")
// Label to show selected items
label := widget.NewLabel("No choices selected")
// Checkbox group
checkGroup := widget.NewCheckGroup(
[]string{"Option A", "Option B", "Option C"},
func(selected []string) {
if len(selected) == 0 {
label.SetText("No choices selected")
} else {
label.SetText(fmt.Sprintf("Selected: %v", selected))
}
},
)
// Set some defaults
checkGroup.SetSelected([]string{"Option B"})
// Arrange UI
content := container.NewVBox(
label,
checkGroup,
)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(300, 200))
myWindow.ShowAndRun()
}
Show Code
package main
import (
"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("Check With Data")
// Create bound boolean
acceptTerms := binding.NewBool()
// Label to reflect checkbox state
label := widget.NewLabel("Not Accepted")
// Create checkbox bound to boolean data
check := widget.NewCheckWithData("Accept Terms & Conditions", acceptTerms)
// Add listener to update label when checkbox changes
acceptTerms.AddListener(binding.NewDataListener(func() {
val, _ := acceptTerms.Get()
if val {
label.SetText("Accepted")
} else {
label.SetText("Not Accepted")
}
}))
// Layout
content := container.NewVBox(
label,
check,
)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(300, 150))
myWindow.ShowAndRun()
}