当前位置: 首页 > article >正文

发现用 Go 写桌面程序真的太爽了...

废话不多说,先看效果,我已经安装到 macOS 了。

6bff294f8f03f0df6b24e35864352fee.gif

81c9171fea9afd5bae79e52292dd958c.png

它是如何构建的?答案是:Fyne 库的魔力。

什么是 Fyne?

Fyne 是一个用 Go 语言编写的跨平台 GUI 库,它允许开发者使用 Go 语言快速构建具有原生外观和感觉的桌面应用程序。

Fyne 的设计理念是简单、易用,同时提供丰富的组件和灵活的布局选项,使得开发者能够专注于应用逻辑,而不必担心界面设计的复杂性。

特点:

  • 跨平台支持:一次编写,应用程序可运行在 WindowsmacOSLinux,甚至 iOSAndroid 上。

  • 易于使用:API 设计简单,开发者无需深入学习复杂的 GUI 原理,只需要熟悉 Go 基础即可轻松上手。

  • 现代外观:Fyne 内置了美观的界面组件,不需要第三方主题支持,应用界面看起来即简洁又现代。

Fyne 的基本架构

核心组件:

  • 应用程序 (app):所有的 Fyne 应用都从 app.New() 开始。

  • 窗口 (window):创建窗口,管理窗口大小和显示内容。

  • 容器 (container):负责布局和排列组件,如按钮、标签、输入框等。

  • 组件 (widgets):Fyne 提供了丰富的 UI 组件,如按钮、标签、输入框等,能够帮助开发者快速搭建界面。

Fyne 的安装

假设你已经安装了 Go 语言,只需要执行以下命令来安装 Fyne:

go get fyne.io/fyne/v2

Hello, Fyne! (示例)

package main

import (
 "fyne.io/fyne/v2/app"
 "fyne.io/fyne/v2/container"
 "fyne.io/fyne/v2/widget"
)

func main() {
 // 创建应用程序
 myApp := app.New()

 // 创建窗口
 myWindow := myApp.NewWindow("Hello Fyne")

 // 设置窗口内容
 label := widget.NewLabel("Hello, Fyne!")
 myWindow.SetContent(container.NewVBox(
  label, // 添加标签
  widget.NewButton("Click Me", func() { // 添加按钮
   label.SetText("Welcome to the world of Fyne!")
  }),
 ))

 // 显示窗口
 myWindow.ShowAndRun()
}

代码详解:

  • app.New():创建应用程序实例。

  • myApp.NewWindow():创建一个新窗口,参数是窗口标题。

  • widget.NewLabel():创建一个文本标签,显示 "你好,Fyne!"。

  • widget.NewButton():创建一个按钮,点击按钮后会更新标签的内容。

  • container.NewVBox():将标签和按钮垂直排列在一起。

运行效果:

07721dbb962bd8d15f3218fc81c6630d.png

Fyne 常见组件

常用组件如下:

  • 标签 (Label):显示静态文本。

  • 按钮 (Button):用户点击后触发事件。

  • 输入框 (Entry):允许用户输入文本。

  • 进度条 (ProgressBar):显示操作进度。

  • 下拉框 (Select):用于选择一个选项。

还可以自定义主题,Fyne 提供了默认的现代主题,但也可以根据需要自定义组件的外观,例如设置自定义字体、颜色等。

myApp.Settings().SetTheme(theme.LightTheme())  // 设置为浅色主题

Fyne 打包与发布

在 Fyne 中打包应用程序可以通过 fyne 提供的命令行工具 fyne-cross 和 fyne 自带的 fyne package 命令来实现。

使用 fyne package 打包

1、首先,确保你已经安装了 Fyne 的命令行工具。

go get fyne.io/fyne/v2/cmd/fyne

2、确保你的应用程序已经写好,并且可以正常运行。

3、运行以下命令进行打包:

fyne package -os windows  # Windows 打包
fyne package -os darwin   # macOS 打包
fyne package -os linux    # Linux 打包

参数:

  • -os:指定打包的操作系统(windows、darwin、linux)。

  • -icon:可以通过 -icon 参数来设置应用的图标,使用 .png 格式。

例如,将应用程序打包为 macOS 可执行文件,并指定图标:

fyne package -os darwin -icon license.png

使用 fyne-cross 打包跨平台应用

Fyne 提供了 fyne-cross 工具,可以跨平台打包应用程序。

例如,可以在 Linux 或 macOS 系统上打包 Windows 和 macOS 可执行文件。

一、安装 fyne-cross

go install github.com/fyne-io/fyne-cross@latest

二、使用 fyne-cross 打包

fyne-cross 支持多种平台打包,包括 Windows、macOS、Linux 以及 iOS 和 Android。

具体的打包命令如下:

fyne-cross windows    # 打包为 Windows 可执行文件
fyne-cross darwin     # 打包为 macOS 应用
fyne-cross linux      # 打包为 Linux 可执行文件
fyne-cross android    # 打包为 Android APK
fyne-cross ios        # 打包为 iOS 应用

感兴趣的,可以折腾起来了 ~

我会将最开始的例子源码,放到知识星球中,欢迎大家前往交流与下载!

53378188eb7e05556bc3ce7b0465591d.jpeg

058ced052013e6d1d442758196b71193.png

e01667200b8721b1c60630b60da44cf4.jpeg


http://www.kler.cn/a/298907.html

相关文章:

  • 解锁动态规划的奥秘:从零到精通的创新思维解析(3)
  • 基于python+django的外卖点餐系统
  • mysql-主从同步与读写分离
  • Redis存在安全漏洞
  • druid与pgsql结合踩坑记
  • 【spring-cloud-gateway总结】
  • Proteus仿真综合实例(1)
  • 使用 JAXB 将内嵌的JAVA对象转换为 xml文件
  • MIT6.824 课程-MapReduce
  • vue3如何创建多环境变量
  • Anti-honeypot - 自动识别Web蜜罐Chrome插件,附下载链接
  • 英文站外链如何建设?
  • 启动程序时遇到0xc000007b应用程序无法正常启动问题
  • Mongodb 4.2.25 安装教程
  • QDY421F-16P-25液氨不锈钢液动紧急切断阀
  • 若依项目后台启动报错: [网关异常处理]、503
  • c++指针和引用专题
  • Matlab程序练习
  • PCIe NVMe SSD 上电初始化全流程
  • Elasticsearch-数据迁移elasticdump
  • go--知识点
  • 大学生必看干货!分享5款ai写毕业论文软件
  • SQL 支持使用 GROUP BY多个列
  • 利用高德+ArcGIS优雅获取任何感兴趣的矢量边界
  • coredump-N: stack 消耗完之后,用户自定义信号处理有些问题 sigaltstack
  • 什么是站点内部搜索垃圾邮件攻击以及如何防范