Skip to content

Instantly share code, notes, and snippets.

@spezifisch
Created August 6, 2024 20:57
Show Gist options
  • Select an option

  • Save spezifisch/e0e065194f190a0b859b128be65a9f50 to your computer and use it in GitHub Desktop.

Select an option

Save spezifisch/e0e065194f190a0b859b128be65a9f50 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("Test Window")
label := widget.NewLabel("Hello Fyne!")
entry := widget.NewEntry()
entry.SetPlaceHolder("Enter text here...")
button1 := widget.NewButton("Button 1", func() {
label.SetText("Button 1 Clicked")
})
button2 := widget.NewButton("Button 2", func() {
label.SetText("Button 2 Clicked")
})
check := widget.NewCheck("Check me", func(checked bool) {
if checked {
label.SetText("Checked")
} else {
label.SetText("Unchecked")
}
})
slider := widget.NewSlider(0, 100)
slider.OnChanged = func(value float64) {
label.SetText("Slider value: " + fmt.Sprintf("%.0f", value))
}
radio := widget.NewRadioGroup([]string{"Option 1", "Option 2", "Option 3"}, func(value string) {
label.SetText("Selected: " + value)
})
selectEntry := widget.NewSelectEntry([]string{"Item 1", "Item 2", "Item 3"})
selectEntry.OnChanged = func(value string) {
label.SetText("Selected: " + value)
}
progressBar := widget.NewProgressBar()
go func() {
for i := 0.0; i <= 1.0; i += 0.01 {
time.Sleep(100 * time.Millisecond)
progressBar.SetValue(i)
}
}()
datePicker := widget.NewEntry()
datePicker.SetPlaceHolder("Pick a date")
datePicker.OnChanged = func(value string) {
label.SetText("Date: " + value)
}
minimizeUnminimizeButton := widget.NewButton("Minimize, wait 3s, show", func() {
myWindow.Hide()
time.AfterFunc(3*time.Second, func() {
myWindow.Show()
})
})
minimizeButton := widget.NewButton("Minimize", func() {
myWindow.Hide()
})
fullScreenButton := widget.NewButton("Full Screen", func() {
myWindow.SetFullScreen(!myWindow.FullScreen())
})
quitButton := widget.NewButtonWithIcon("Quit", theme.ErrorIcon(), func() {
myApp.Quit()
})
quitButton.Importance = widget.HighImportance
content := container.NewVBox(
label,
entry,
button1,
button2,
check,
slider,
radio,
selectEntry,
progressBar,
datePicker,
minimizeUnminimizeButton,
minimizeButton,
fullScreenButton,
quitButton,
)
scrollContainer := container.NewVScroll(content)
myWindow.SetContent(container.NewBorder(nil, nil, nil, nil, scrollContainer))
myWindow.Resize(fyne.NewSize(400, 600))
myWindow.ShowAndRun()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment