Progress Bar
A ProgressBar is a visual indicator that represents the completion status of a task or process in Fyne.
Basic Progress
Section titled “Basic Progress”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()}Infinite Progress Bar
Section titled “Infinite Progress Bar”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()}