
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.