fyne-golang-gui

CryptoCurrency Updates – Fyne Golang Gui tutorial 74

CryptoCurrency Updates – Fyne Golang Gui tutorial 74

package main

import (
	"encoding/json"
	"fmt"
	"image/color"
	"io/ioutil"
	"net/http"

	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/canvas"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.NewWithID("")
	w := a.NewWindow("Bitcoin Updates App")
	w.Resize(fyne.NewSize(300, 400))
	URL := "https://api.coindesk.com/v1/bpi/currentprice.json"
	//API
	res, _ := http.Get(URL)
	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)
	coinDisk, _ := UnmarshalCoinDisk(body)
	fmt.Println(coinDisk)
	label1 := canvas.NewText(coinDisk.ChartName+" Chart", color.Black)
	label1.Alignment = fyne.TextAlignCenter
	label1.TextStyle = fyne.TextStyle{Bold: true}
	s1 := fmt.Sprintf("Code: %s", coinDisk.Bpi.Usd.Code)
	s2 := fmt.Sprintf("Rate: %s", coinDisk.Bpi.Usd.Rate)
	s3 := fmt.Sprintf("Desc: %s", coinDisk.Bpi.Usd.Description)
	s4 := fmt.Sprintf("RateFloat: %.2f", coinDisk.Bpi.Usd.RateFloat)
	grid := widget.NewTextGridFromString(s1 + "\n" + s2 + "\n" + s3 + "\n" + s4 + "\n")
	grid.SetStyleRange(4, 0, 7, 7, &widget.CustomTextGridStyle{BGColor: color.NRGBA{R: 64, G: 64, B: 192, A: 128}})
	grid.Rows[1].Style =
		&widget.CustomTextGridStyle{BGColor: color.NRGBA{R: 64, G: 64, B: 64, A: 128}}
	grid.ShowLineNumbers = true
	grid.ShowWhitespace = true
	r1 := fmt.Sprintf("Code: %s", coinDisk.Bpi.Eur.Code)
	r2 := fmt.Sprintf("Rate: %s", coinDisk.Bpi.Eur.Rate)
	r3 := fmt.Sprintf("Desc: %s", coinDisk.Bpi.Eur.Description)
	r4 := fmt.Sprintf("RateFloat: %.2f", coinDisk.Bpi.Eur.RateFloat)
	grid2 := widget.NewTextGridFromString(r1 + "\n" + r2 + "\n" + r3 + "\n" + r4 + "\n")
	grid2.SetStyleRange(4, 0, 7, 7,
		&widget.CustomTextGridStyle{BGColor: color.NRGBA{R: 192, G: 64, B: 192, A: 128}})
	grid2.Rows[1].Style =
		&widget.CustomTextGridStyle{BGColor: color.NRGBA{R: 64, G: 192, B: 64, A: 128}}
	grid2.ShowLineNumbers = true
	grid2.ShowWhitespace = true
	v1 := fmt.Sprintf("Code: %s", coinDisk.Bpi.Gbp.Code)
	v2 := fmt.Sprintf("Rate: %s", coinDisk.Bpi.Gbp.Rate)
	v3 := fmt.Sprintf("Desc: %s", coinDisk.Bpi.Gbp.Description)
	v4 := fmt.Sprintf("RateFloat: %.2f", coinDisk.Bpi.Gbp.RateFloat)
	grid3 := widget.NewTextGridFromString(v1 + "\n" + v2 + "\n" + v3 + "\n" + v4 + "\n")
	grid3.SetStyleRange(4, 0, 7, 7,
		&widget.CustomTextGridStyle{BGColor: color.NRGBA{R: 0, G: 64, B: 192, A: 128}})
	grid3.Rows[1].Style =
		&widget.CustomTextGridStyle{BGColor: color.NRGBA{R: 192, G: 192, B: 64, A: 128}}
	grid3.ShowLineNumbers = true
	grid3.ShowWhitespace = true
	img := canvas.NewImageFromFile("bitcoin-icon.jpg")
	img.FillMode = canvas.ImageFillOriginal
	e := container.NewVBox(label1, grid, grid2, grid3)
	e.Resize(fyne.NewSize(300, 300))
	c := container.NewBorder(img, nil, nil, nil, e)
	w.SetContent(c)
	w.ShowAndRun()
}

// This file was generated from JSON Schema using quicktype, do not modify it directly.
// To parse and unparse this JSON data, add this code to your project and do:
//
//  coinDisk, err := UnmarshalCoinDisk(bytes)
//  bytes, err = coinDisk.Marshal()
func UnmarshalCoinDisk(data []byte) (CoinDisk, error) {
	var r CoinDisk
	err := json.Unmarshal(data, r)
	return r, err
}
func (r *CoinDisk) Marshal() ([]byte, error) {
	return json.Marshal(r)
}

type CoinDisk struct {
	Time       Time   `json:"time"`
	Disclaimer string `json:"disclaimer"`
	ChartName  string `json:"chartName"`
	Bpi        Bpi    `json:"bpi"`
}
type Bpi struct {
	Usd Eur `json:"USD"`
	Gbp Eur `json:"GBP"`
	Eur Eur `json:"EUR"`
}
type Eur struct {
	Code        string  `json:"code"`
	Symbol      string  `json:"symbol"`
	Rate        string  `json:"rate"`
	Description string  `json:"description"`
	RateFloat   float64 `json:"rate_float"`
}
type Time struct {
	Updated    string `json:"updated"`
	UpdatedISO string `json:"updatedISO"`
	Updateduk  string `json:"updateduk"`
}

[easy_media_download url=”https://blogvali.com/wp-content/uploads/2022/11/main74.zip” text=”Download Code” color=”red_darker”]

Fyne Golang GUI Course

 

Improved fyne documentation with videos.
Fyne CryptoCurrency DEMO & Source is another addition in our fyne examples series.
fyne widgets taught with the help of interactive videos.
Tony BB
 

TonyBB is a Coach , marketer, hypnotist and a founder of RSKVF Production who specializes in providing simple, affordable, and easy to use solutions for Life.

Click Here to Leave a Comment Below 0 comments

Leave a Reply: