Go 真的也可以进行 GUI 开发:还有这样的图书呢
liuian 2024-12-18 15:36 83 浏览
大家好,我是站长 polarisxu。
最近看到一个视频:Building a Chess GUI with Fyne[1],讲解如何使用 Go 构建一个完整的国际象棋应用程序。这个视频演示了如何构建 UI,添加动画,交互和拖放。所有这些都基于 Fyne[2] 这个库构建,可以安装到桌面和移动设备!这个国际象棋的项目地址:https://github.com/andydotxyz/chess。
出于好奇,我深挖了一下,访问了视频作者的个人网站:https://andy.xyz/,发现它就是 Fyne 的作者:Andrew Williams。他还创建了 FyneLabs[3],专门支持 Fyne 的发展。
01 一本 Go GUI 图书
同时,通过作者的网站,我发现他写了一本书:《GUI Application Development in Go》[4],作者在这本书里对比了 Go 中可用的 GUI 工具包,包括一些传统的工具包(Walk[5]、 andlabs UI[6]、 Go-GTK[7]、qt[8])和一些更前沿的项目(Shiny[9]、 nk[10]、 Fyne[11])。通过这些项目,作者探讨什么样的结构和代码更适合开发 Go GUI 程序。
通过 GTK+ 的 Go 绑定构建了一个电子邮件应用程序,界面如下图,看起来还可以?
另外有一个图片查看器,使用 Fyne 构建的,界面如下图:
在这本书中,作者还讨论了如何规划和构建一个 GUI 应用程序以及它所依赖的代码。此外还了如何使用单元测试、持续集成,以及在集成网络和云服务时如何保持可维护的代码。最后介绍了如何打包和分发跨平台应用程序,以便交付给最终用户。
该书在 Amazon[12] 上可以买到,还有 Kindle 版,出版时间是 2019 年 2 月。
02 一个 Fyne 图书
通过上面那本书,我又发现了另外一本书:《Building Cross-Platform GUI Applications with Fyne》[13],副标题是:Create beautiful, platform-agnostic graphical applications using Fyne and the Go programming language。
这也是 Andrew Williams 写的,出版时间是 2021 年 1 月底。
上一本书主要对比现存的 Go GUI 库,以及探索一个更合适的 Go GUI 开发方案,而这本书,主要讲述如何使用 Fyne 这个 Go GUI 工具包开发出漂亮的、跨平台的 GUI 应用程序。
该书主要让你:
- 了解如何使用标准 widgets,dialogs 和 layouts 以及如何构建自己的以上组件
- 了解如何开发应用程序和包并将其分发到不同的操作系统和应用商店
- 探索 Fyne 工具包的设计原则和愿景以及你在项目中可以如何使用
本书主要通过示例项目来讲解,一共有五个示例项目,你将学习如何有效构建应用程序,专注于每个主要区域,包括画布,布局,文件处理,小部件,数据绑定和主题。本书还将向你展示已完成的应用程序如何在桌面计算机,笔记本电脑和智能手机上运行。完成这些项目后,你还可以将它们分发各种应用商店中供别人下载使用。
如果你坚持学完该书,应该能够创建出漂亮的跨平台图形应用程序。
以下是该书目录:
- A Brief History of GUI Toolkits and Cross-Platform Development
- The Future According to Fyne
- Window, Canvas, and Drawing
- Layout and File handling
- Widget Library and Themes
- Data Binding and Storage
- Building Custom Widgets and Themes
- Project Structure and Best Practices
- Bundling Resources and Preparing for Release
- Distribution - App Stores and Beyond
- Appendix A: Developer Tool Installation
- Appendix B: Installation of Mobile Build Tools
- Appendix C: Cross-Compiling
03 总结
虽然 GUI 不是 Go 的主战场,但作为一门通用编程语言,一些第三方库证明,Go 也是可以进行 GUI 开发的。如果你对 Go 语言开发 GUI 感兴趣,可以看看本文介绍的这两本书,特别是 Fyne 这本。从 Fyne 的发展看,前途还是值得期待的。
当然,你也可以直接研究文章开头提到的国际象棋项目。
以后请别说 Go 不能开发 GUI 程序了~当然,我们可以将 Go GUI 开发作为自己的爱好,业余研究,不能指望通过它找工作啥的。
你会学习下 Go 的 GUI 开发吗?欢迎留言交流。
参考资料
[1]
Building a Chess GUI with Fyne: https://www.youtube.com/watch?v=zlPDWBLhn6c
[2]
Fyne: https://fyne.io/
[3]
FyneLabs: https://fynelabs.com/
[4]
《GUI Application Development in Go》: https://andy.xyz/2019/03/07/meet-the-first-book-about-golang-gui-programming/
[5]
Walk: https://github.com/lxn/walk
[6]
andlabs UI: https://github.com/andlabs/ui
[7]
Go-GTK: https://github.com/mattn/go-gtk
[8]
qt: https://github.com/therecipe/qt
[9]
Shiny: https://github.com/golang/exp/tree/master/shiny
[10]
nk: https://github.com/golang-ui/nuklear
[11]
Fyne: https://github.com/fyne-io/fyne
[12]
Amazon: https://www.amazon.com/Hands-GUI-Application-Development-cross-platform-ebook/dp/B07GYLYSCT/ref=sr_1_1
[13]
《Building Cross-Platform GUI Applications with Fyne》: https://www.amazon.com/Building-Cross-Platform-Applications-Fyne-platform-agnostic-ebook/dp/B08PKTNVBQ/ref=pd_rhf_dp_s_ci_mcx_mr_hp_d_2
相关推荐
- 如何修改文件(如何修改文件创建时间)
-
工具/原料电脑windows系统方法/步骤1、新建一个文档文件。2、在文件名后面输入“.exe”按下enter键。3、文件的名字改变了,但格式没变。4、点击“菜单”点击“工具”,点击“文件夹选项...
- win7剪贴板怎么调出来(windows7的剪贴板在哪里)
-
要开启Win7剪贴板,首先需要打开“运行”窗口,方法是按下“Win+R”快捷键。在弹出的窗口中输入“clipbrd”并点击“确定”按钮。这样就会打开剪贴板窗口。在窗口中可以看到最近复制或剪切的内容。如...
- cmd一键清除垃圾命令chkdsk(cmd一键清理)
-
这个就是自检命令,在一些轻微的文件损坏可以用这个命令回复楼主你打的/F是修复磁盘上的错误意思/R是查找不正确的扇区并恢复可读信息。chkdsk的全称是checkdisk,就是磁盘检查的意思。这个东...
- 无备份彻底删除照片找回(苹果手机无备份彻底删除照片找回)
-
如果您的手机照片没有备份,但是误删了照片,可以尝试以下几个方法恢复:1.使用Android手机自带的垃圾桶功能:如果您使用的是安卓手机,最新版的Android系统中提供了“回收站”功能。您可以在相册...
- qq怎么改实名认证(qq怎么改实名认证吗)
-
要先将原来的实名认证注销掉,才可修改QQ的实名认证,具体方法如下,打开手机【QQ】,点击左上角的【头像】,然后选择【我的QQ钱包】,点击右上角的【设置】,在设置界面选择【实名认证】,进入到实名认证界面...
- win10启用网络发现自动关闭(win10启用网络发现自动关闭了)
-
因为在Win10系统中,网络发现是一个网络共享和连接的设置选项,如果关闭了网络发现,那么其他计算机就无法找到你的计算机并进行资源共享,这样能够提高安全性。同时关闭网络发现能够减少广播包,降低网络负载,...
- 看图软件cad手机版下载(看图软件cad手机版下载安装)
-
你可以在应用商店或者CAD官方网站上搜索"CAD快速识图"并下载安装。在下载前,建议先确认你的手机是否兼容这个应用程序,以及查看是否有最新版本可供下载。下载完成后,打开应用并按照提示完...
-
- 怎么进入tp link无线路由器设置
-
tp-link路由器的设置登录入口进入方法如下1.打开tplogin.cn页面,点击右上角的“登录”菜单。2.输入用户名和密码,点击登录按钮,进入登录页面。3.如果你忘记了用户名或密码,可点击忘记密码,并输入注册邮箱或者手机号,点击确认,系...
-
2025-12-31 08:05 liuian
- 电脑莫名重启怎么回事(电脑莫名奇妙的重启)
-
电源的大电容漏电,供电不足造成的,这个就要更换电源2、主板上的内存插槽和内存之间接触不良出现问题,或者内存的显存集成块出现虚焊也会出现老是重启3、CPU风扇出问题,或者散热器的卡子松了。当CPU的风扇...
- 如何一键还原电脑系统win7(一键还原win7系统按那个键)
-
方法如下: 1、下载“一键GHOST硬盘版”用压缩工具软件解压,解压后选“setup.exe”文件,即自动把一键还原安装到硬盘中。安装完成后,在桌面和开始菜单将建立程序的快捷方式: Win7系统...
- 笔记本键盘无法使用(dell笔记本电脑键盘失灵一键修复)
-
个别键因为脏了接触不好或者是弹簧失去了弹性,可以自行打开键盘,用无水酒精清洗一下键盘内部。修改笔记本键盘的驱动:通过“我的电脑”打开系统属性,选择硬件标签,打开设备管理器,我们发现中文Windows...
- u启宝装机工具(u启宝装系统)
-
1、将下载好的ghostwin7系统镜像文件拷贝到u盘内,重启电脑,在看到开机画面时按下相应的启动快捷键(大家可以到u启动官网查找相应的快捷键)即可进入u启动的主菜单界面,随后选择usb选项并按回车...
- 找回wifi密码的方法(找回wifi密码怎么找)
-
1、在已经连接WiFi的手机上操作:在手机桌面找到设定,进入到手机设置页面。2、在设置中,找到WLAN也就是无线局域网,点击进入无线网络的查看或配置页面。3、进入到WLAN页面后,我们会看见周围的Wi...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
