【Go系列】Go的UI框架Fyne

前言

        总有人说Go语言是一门后端编程语言。

        Go虽然能够很好地处理后端开发,但是者不代表它没有UI库,不能做GUI,我们一起来看看Go怎么来画UI吧。

正文

Go语言由于其简洁的语法、高效的性能和跨平台的编译能力,非常适合用于开发GUI应用程序。尽管Go不是传统上用于GUI开发的语言,但它具备以下特点使其成为这一任务的合适选择:

  1. 跨平台编译:Go可以轻松地交叉编译,这意味着你可以为Windows、Linux和macOS创建相同的代码库。

  2. 性能:Go语言编译后的程序通常是静态链接的,运行速度快,这对于GUI应用来说是一个重要的特性。

  3. 并发模型:Go的并发模型,特别是goroutines和channels,可以简化处理GUI中的异步操作。

  4. 简洁的依赖管理:Go的模块系统使得依赖管理变得简单,这对于构建和维护GUI应用程序是非常有帮助的。

以下是几种流行的Go语言UI库:

  1. GTK:通过使用gotk3等绑定,Go可以用来创建GTK+应用程序。GTK是一个广泛使用的跨平台工具集,用于创建GUI应用程序。

  2. Qt:通过qt包,Go可以与Qt框架集成,这是一个功能丰富的跨平台C++库,同样可以用于Go。

  3. Walk:这是一个Go语言的Windows应用程序库,它包装了libui,一个用于Go的便携式UI库。

接下来,我将详细介绍Fyne:

Fyne

我们可以通过该网站学习  快速开始 | Fyne 开发文档 (go-circle.cn)

Fyne是一个用Go编写的跨平台GUI库,旨在为开发人员提供快速、简单和高效的方法来创建应用程序。以下是Fyne的一些特点:

  • 跨平台:Fyne支持Windows、macOS、Linux、Android和iOS等多个平台。
  • 简单易用:Fyne的设计哲学是简单直观,使得Go开发者可以轻松上手。
  • 原生外观:Fyne应用程序在所有平台上都具有原生的外观和感觉。
  • 扩展性:Fyne提供了一系列标准组件,同时允许自定义扩展。

Fyne的关键组件和概念

  • Canvas:这是Fyne中绘制图形的基础,可以用来绘制形状、图像和文本。
  • Widgets:Fyne提供了一系列标准的小部件,如按钮、文本框、选择器等。
  • Layouts:布局用于控制窗口和小部件的排列方式,例如盒式布局、网格布局等。
  • Drivers:Fyne使用驱动程序来适配不同的操作系统,确保应用程序在各个平台上都能良好运行。

使用Fyne创建简单应用程序的步骤

  1. 安装Fyne包:

    go get fyne.io/fyne/v2
    
  2. 创建一个简单的窗口:

    package mainimport ("fyne.io/fyne/v2/app""fyne.io/fyne/v2/widget"
    )func main() {a := app.New()w := a.NewWindow("Hello")w.SetContent(widget.NewLabel("Hello Fyne!"))w.ShowAndRun()
    }
    
  3. 编译并运行你的应用程序。

Fyne的文档齐全,社区活跃,是Go语言开发GUI应用程序的一个非常好的选择。

运行官方Demo

我们通过以下指令来运行

go run fyne.io/fyne/v2/cmd/fyne_demo@latest

就能够看到电脑上生成下面的窗口:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/385539.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙应用框架开发【dlopen加载so库并获取Rawfile资源】 NDK

dlopen加载so库并获取Rawfile资源 介绍 本示例中主要介绍在TaskPool子线程中使用dlopen加载so库,以及如何使用Native Rawfile接口操作Rawfile目录和文件。功能包括文件列表遍历、文件打开、搜索、读取和关闭Rawfile。 效果预览 使用说明 应用界面中展示了Rawfil…

2024最新Uniapp的H5网页版添加谷歌授权验证

现在教程不少,但是自从谷歌升级验证之后,以前的老教程就失效了,现在写一个新教程以备不时之需。 由于众所周知的特殊原因,开发的时候一定注意网络环境,如果没有梯子是无法进行开发的哦~ clientID的申请方式我就不再进…

昇思MindSpore 应用学习-DCGAN生成漫画头像-CSDN

日期 心得 昇思MindSpore 应用学习-DCGAN生成漫画头像(AI代码学习) DCGAN生成漫画头像 在下面的教程中,我们将通过示例代码说明DCGAN网络如何设置网络、优化器、如何计算损失函数以及如何初始化模型权重。在本教程中,使用的动…

数据结构:二叉树(堆)的顺序存储

文章目录 1. 树1.1 树的概念和结构1.2 树的相关术语 2. 二叉树2.1 二叉树的概念和结构2.2 二叉树的特点2.3 特殊的二叉树2.3.1 满二叉树2.3.2 完全二叉树 2.4 二叉树的性质 3. 实现顺序结构二叉树3.1 堆的概念和结构3.2 初始化3.3 销毁3.4 插入数据3.5 向上调整算法3.6 删除数据…

如何查找下载安装安卓APK历史版本?

在安卓设备上,有时候我们可能希望安装某个软件的旧版本,可能是因为新版本不兼容、功能改变不符合需求或是其他原因。 安卓系统并不像iOS那样提供直观的历史版本下载界面。 不过,通过一些第三方市场和网站,我们仍然可以找到并安装…

【LLM】-08-搭建问答系统-语言模型,提问范式与 Token

目录 1、语言模型 1.1、训练过程: 1..2、大型语言模型分类: 1.3、指令微调模型训练过程: 2、Tokens 3、Helper function辅助函数 (提问范式) 4、计算token数量 1、语言模型 大语言模型(LLM)是通过预测下一个词…

【python】sklearn基础教程及示例

【python】sklearn基础教程及示例 Scikit-learn(简称sklearn)是一个非常流行的Python机器学习库,提供了许多常用的机器学习算法和工具。以下是一个基础教程的概述: 1. 安装scikit-learn 首先,确保你已经安装了Python和…

搜索引擎项目(四)

SearchEngine 王宇璇/submit - 码云 - 开源中国 (gitee.com) 基于Servlet完成前后端交互 WebServlet("/searcher") public class DocSearcherServlet extends HttpServlet {private static DocSearcher docSearcher new DocSearcher();private ObjectMapper obje…

Kettle下载安装

环境说明 虚拟机:Win7;MySql8.0 主机:Win11;JDK1.8;Kettle 9.4(Pentaho Data Integration 9.4)(下载方式见文末) 安装说明 【1】解压后运行Spoon.bat 【2】将jar包 复…

【Linux C | 网络编程】进程池退出的实现详解(五)

上一篇中讲解了在进程池文件传输的过程如何实现零拷贝,具体的方法包括使用mmap,sendfile,splice等等。 【Linux C | 网络编程】进程池零拷贝传输的实现详解(四) 这篇内容主要讲解进程池如何退出。 1.进程池的简单退…

聊聊基于Alink库的主成分分析(PCA)

概述 主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维和特征提取技术,用于将高维数据转换为低维的特征空间。其目标是通过线性变换将原始特征转化为一组新的互相无关的变量,这些新变量称为主成分&…

7月24日JavaSE学习笔记

序列化版本控制 序列化:将内存对象转换成序列(流)的过程 反序列化:将对象序列读入程序,转换成对象的方式;反序列化的对象是一个新的对象。 serialVersionUID 是一个类的序列化版本号 private static fin…

算法通关:006_1二分查找

二分查找 查找一个数组里面是否存在num主要代码运行结果 详细写法自动生成数组和num,利用对数器查看二分代码是否正确 查找一个数组里面是否存在num 主要代码 /*** Author: ggdpzhk* CreateTime: 2024-07-27*/ public class cg {//二分查找public static boolean …

戴着苹果Vision Pro,如何吃花生米

6月底苹果Vision Pro国内开售,我早早到官网预订了一台。选择必要的配件,输入视力信息,定制符合自己视力的蔡司镜片。确实贵。把主要配件和镜片配齐,要3万6,比Pico、META的眼镜贵一个数量级。 Vision Pro出来后&#x…

C++的STL简介(一)

目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.string类 4.1为什么学习string类? 4.2string常见接口 4.2.1默认构造 ​编辑 4.2.2析构函数 Element access: 4.2.3 [] 4.2.4迭代器 ​编辑 auto 4.2.4.1 begin和end 4.2.4.2.regin和rend Capacity: 4.2.5…

Q238. 除自身以外数组的乘积

思路 一开始想到的是按位乘 看了题解,思路是存i左边的乘积和 与 i右边的乘积和 代码一: 需要三次循环,需要额外空间 left和right数组 代码: public int[] productExceptSelf(int[] nums) {int[] left new int[nums.length];int[] right …

【爱上C++】list用法详解、模拟实现

文章目录 一:list介绍以及使用1.list介绍2.基本用法①list构造方式②list迭代器的使用③容量④元素访问⑤插入和删除⑥其他操作image.png 3.list与vector对比 二:list模拟实现1.基本框架2.节点结构体模板3.__list_iterator 结构体模板①模板参数说明②构…

基于Xejen框架实现的C# winform鼠标点击器、电脑按键自动点击器的软件开发及介绍

功能演示 文章开始之前,仍然是先来个视频,以便用户知道鼠标连点器的基本功能 软件主界面 多功能鼠标连点器 快速点击: 痕即鼠标点击器可以设定每秒点击次数,让您轻松应对高频点击需求。 切换时长,即每次动作之间的间…

大数据的数据质量有效提升的研究

大数据的数据质量有效提升是一个涉及多个环节和维度的复杂过程。以下是从数据采集、处理、管理到应用等方面,对大数据数据质量有效提升的研究概述: 一、数据采集阶段 明确采集需求:在数据采集前,需明确数据需求,包括…