85/100 Dias de Golang - Interfaces Gráficas com Fyne
Table of Contents
#
Interfaces Gráficas com Fyne
Pesquisando sobre interfaces gráficas em Golang encontrei o Fyne. Fyne é um framework open-source para construção de interfaces gráficas modernas usando a linguagem Go, ele entrega suporte nativo para Windows, Linux, macOS, Android e iOS, layouts responsivos, temas, vários widgets nativos: botões, entradas de texto, caixas de seleção, tabelas e muito mais. Achei legal que eles oferecem uma demo para baixarmos.
go install fyne.io/fyne/v2/cmd/fyne_demo@latest
Rodando a aplicação com:
fyne_demo
Nessa demo temos acesso a vários componentes do fyne. Muito útil para vermos o potencial do framework. Agora vamos instalar o fyne e criar uma aplicação:
go install fyne.io/fyne/v2/cmd/fyne@latest
go get fyne.io/fyne/v2
Vamos criar uma calculadora, veja a estrutura básica:
package main
import (
"strconv"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("Calculadora")
entrada1 := widget.NewEntry()
entrada1.SetPlaceHolder("Número 1")
entrada2 := widget.NewEntry()
entrada2.SetPlaceHolder("Número 2")
resultado_soma := widget.NewLabel("Soma: ")
resultado_multiplicacao := widget.NewLabel("Multiplicação: ")
resultado_divisao := widget.NewLabel("Divisão: ")
botao := widget.NewButton("Somar", func() {
a, _ := strconv.Atoi(entrada1.Text)
b, _ := strconv.Atoi(entrada2.Text)
resultado_soma.SetText("Soma: " + strconv.Itoa(a+b))
resultado_multiplicacao.SetText("Resultado: " + strconv.Itoa(a*b))
resultado_divisao.SetText("Resultado: " + strconv.Itoa(a/b))
})
conteudo := container.NewVBox(entrada1, entrada2, botao, resultado_soma, resultado_multiplicacao, resultado_divisao)
myWindow.SetContent(conteudo)
myWindow.ShowAndRun()
}
A estrutura dos apps fyne é sempre bem semelhante:
app.New() // Cria o App
→ app.NewWindow() // Cria uma janela
→ container.NewXXX() // Define o layout (VBox, HBox, etc.)
→ widget.NewXXX() // Adiciona botões, campos, textos, etc.
→ window.ShowAndRun() // Exibe e roda o app
A estrutura é bem limpa e organizada, podemos reutilizar os widgets e o suporte nativo a múltiplas plataformas é muito legal.