Skip to content

Progress Bar

A ProgressBar is a visual indicator that represents the completion status of a task or process in Fyne.

Show Code
package main
import (
"time"
"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("Progress Bar")
progressValue := binding.NewFloat()
progress := widget.NewProgressBarWithData(progressValue)
startBtn := widget.NewButton("Start Progress", func() {
go func() {
for i := 0.0; i <= 1.0; i += 0.1 {
time.Sleep(300 * time.Millisecond)
progressValue.Set(i)
}
}()
})
myWindow.SetContent(container.NewVBox(
widget.NewLabel("Progress Bar"),
progress,
startBtn,
))
myWindow.Resize(fyne.NewSize(300, 150))
myWindow.ShowAndRun()
}
Show Code
package main
import (
"time"
"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.NewWithID("app.com.progressbar")
myWindow := myApp.NewWindow("Infinite ProgressBar")
status := binding.NewString()
status.Set("Idle")
statusLabel := widget.NewLabelWithData(status)
progress := widget.NewProgressBarInfinite()
progress.Hide()
startBtn := widget.NewButton("Start Task", func() {
fyne.Do(func() {
progress.Show()
status.Set("Processing...")
})
go func() {
// Simulate long-running task
time.Sleep(5 * time.Second)
// Safely update UI from goroutine
fyne.Do(func() {
status.Set("Done")
progress.Hide()
})
}()
})
content := container.NewVBox(
statusLabel,
progress,
startBtn,
)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(300, 150))
myWindow.ShowAndRun()
}