Calculator Demo + Source Code – Fyne GUI Golang tutorial 39
Calculator Demo Source Code – Fyne GUI Golang tutorial 39
Source Code
<div>
<div>package main</div>
<div>import (</div>
<div> "fmt"</div>
<div> "image/color"</div>
<div> "strconv"</div>
<div> "fyne.io/fyne/v2"</div>
<div> "fyne.io/fyne/v2/app"</div>
<div> "fyne.io/fyne/v2/canvas"</div>
<div> "fyne.io/fyne/v2/container"</div>
<div> "fyne.io/fyne/v2/widget"</div>
<div>)</div>
<div>func main() {</div>
<div> a := app.New()</div>
<div> w := a.NewWindow("calc")</div>
<div> w.Resize(fyne.NewSize(400, 400))</div>
<div> var val1 int = 0</div>
<div> var val2 int = 0</div>
<div> var symbol string = ""</div>
<div> var total string = ""</div>
<div> var entryText string = ""</div>
<div> entry1 := widget.NewEntry()</div>
<div> entry1.TextStyle = fyne.TextStyle{Bold: true}</div>
<div> entry1.SetPlaceHolder("Calculator..")</div>
<div> btn1 := widget.NewButton("1", func() {</div>
<div> total = total + "1"</div>
<div> entryText = entryText + "1"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn2 := widget.NewButton("2", func() {</div>
<div> total = total + "2"</div>
<div> entryText = entryText + "2"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn3 := widget.NewButton("3", func() {</div>
<div> total = total + "3"</div>
<div> entryText = entryText + "3"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn4 := widget.NewButton("4", func() {</div>
<div> total = total + "4"</div>
<div> entryText = entryText + "4"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn5 := widget.NewButton("5", func() {</div>
<div> total = total + "5"</div>
<div> entryText = entryText + "5"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn6 := widget.NewButton("6", func() {</div>
<div> total = total + "6"</div>
<div> entryText = entryText + "6"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn7 := widget.NewButton("7", func() {</div>
<div> total = total + "7"</div>
<div> entryText = entryText + "7"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn8 := widget.NewButton("8", func() {</div>
<div> total = total + "8"</div>
<div> entryText = entryText + "8"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn9 := widget.NewButton("9", func() {</div>
<div> total = total + "9"</div>
<div> entryText = entryText + "9"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btn0 := widget.NewButton("0", func() {</div>
<div> total = total + "0"</div>
<div> entryText = entryText + "0"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btnDot := widget.NewButton(".", func() {</div>
<div> })</div>
<div> result := canvas.NewText("Result", color.Black)</div>
<div> result.TextSize = 30</div>
<div> result.Alignment = fyne.TextAlignCenter</div>
<div> btnClear := widget.NewButton("Clear", func() {</div>
<div> entry1.SetText("")</div>
<div> total = ""</div>
<div> result.Text = ""</div>
<div> entryText = ""</div>
<div> })</div>
<div> // btnClear.Text = "NoClear"</div>
<div> btnPlus := widget.NewButton("+", func() {</div>
<div> val1, _ = strconv.Atoi(total)</div>
<div> fmt.Print(fmt.Sprint(val1))</div>
<div> fmt.Print(fmt.Sprint(val2))</div>
<div> symbol = "+"</div>
<div> fmt.Print(symbol)</div>
<div> entryText = entryText + "+"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> total = ""</div>
<div> })</div>
<div> btnMinus := widget.NewButton("-", func() {</div>
<div> val1, _ = strconv.Atoi(total)</div>
<div> fmt.Print(fmt.Sprint(val1))</div>
<div> fmt.Print(fmt.Sprint(val2))</div>
<div> symbol = "-"</div>
<div> fmt.Print(symbol)</div>
<div> total = ""</div>
<div> entryText = entryText + "-"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btnMultiply := widget.NewButton("x", func() {</div>
<div> val1, _ = strconv.Atoi(total)</div>
<div> fmt.Print(fmt.Sprint(val1))</div>
<div> fmt.Print(fmt.Sprint(val2))</div>
<div> symbol = "*"</div>
<div> fmt.Print(symbol)</div>
<div> total = ""</div>
<div> entryText = entryText + "*"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btnDivide := widget.NewButton("/", func() {</div>
<div> val1, _ = strconv.Atoi(total)</div>
<div> fmt.Print(fmt.Sprint(val1))</div>
<div> fmt.Print(fmt.Sprint(val2))</div>
<div> symbol = "/"</div>
<div> fmt.Print(symbol)</div>
<div> total = ""</div>
<div> entryText = entryText + "/"</div>
<div> entry1.SetText(fmt.Sprint(entryText))</div>
<div> })</div>
<div> btnEqual := widget.NewButton("=", func() {</div>
<div> val2, _ := strconv.Atoi(total)</div>
<div> if symbol == "+" {</div>
<div> myanswer := (val1) + (val2)</div>
<div> fmt.Println("Sum : ", myanswer)</div>
<div> result.Text = fmt.Sprint(myanswer)</div>
<div> result.Refresh()</div>
<div> } else if symbol == "-" {</div>
<div> myanswer := (val1) - (val2)</div>
<div> fmt.Println("Minus : ", myanswer)</div>
<div> result.Text = fmt.Sprint(myanswer)</div>
<div> result.Refresh()</div>
<div> } else if symbol == "*" {</div>
<div> myanswer := (val1) * (val2)</div>
<div> fmt.Println("Multiply : ", myanswer)</div>
<div> result.Text = fmt.Sprint(myanswer)</div>
<div> result.Refresh()</div>
<div> } else {</div>
<div> myanswer := (val1) / (val2)</div>
<div> fmt.Println("divide : ", myanswer)</div>
<div> result.Text = fmt.Sprint(myanswer)</div>
<div> result.Refresh()</div>
<div> }</div>
<div> total = ""</div>
<div> })</div>
<div> w.SetContent(</div>
<div> container.NewVBox(</div>
<div> entry1,</div>
<div> result,</div>
<div> container.NewGridWithColumns(</div>
<div> 4,</div>
<div> btn1,</div>
<div> btn2,</div>
<div> btn3,</div>
<div> btn4,</div>
<div> btn5,</div>
<div> btn6,</div>
<div> btn7,</div>
<div> btn8,</div>
<div> btn9,</div>
<div> btn0,</div>
<div> btnDot,</div>
<div> btnEqual,</div>
<div> btnPlus,</div>
<div> btnMinus,</div>
<div> btnMultiply,</div>
<div> btnDivide,</div>
<div> btnClear,</div>
<div> ),</div>
<div> ),</div>
<div> )</div>
<div> w.ShowAndRun()</div>
<div>}</div>
</div>
[easy_media_download url=”http://blogvali.com/wp-content/uploads/fyne-golang-downloads/main39.go” text=”Download Code” color=”red_darker”]
Fyne Golang GUI Course