0%

GO-Fyne

学习GO语言的Fyne框架

入门

基本环境

Fyne 需要存在 3 个基本元素,Go 工具(至少 1.12 版)、一个 C 编译器(用于连接系统图形驱动程序)和一个系统图形驱动程序。

linux下需要

1
sudo apt-get install golang gcc libgl1-mesa-dev xorg-dev

安装

见Fyne的github页面

简单程序

  1. 使用 app.New() 创建一个应用程序实例
  2. 使用 app.NewWindow() 打开一个窗口
  3. 定义一个小部件树,在窗口上使用 SetContent() 将其设置为主要内容
  4. 通过在窗口上调用 ShowAndRun() 来显示应用程序 UI

应用和事件

GUI 应用程序需要运行一个事件(有时称为 runloop)来处理用户交互和绘图事件。

在 Fyne 中,这是使用App.Run()Window.ShowAndRun()函数开始的。必须从main()函数中设置代码的末尾调用其中之一。

一个应用程序应该只有一个运行循环,因此应该只在代码中调用一次Run()。再次调用它会导致错误。

对于桌面运行时,可以通过调用App.Quit() 直接退出应用程序(移动应用程序不支持此功能)(通常在开发人员代码中不需要)。关闭所有窗口后,应用程序也将退出。在应用程序退出Run()之前不会调用之后执行的函数。

更新GUI的内容

1
2
3
4
5
6
//第一步是将要更新的小部件分配给变量。
clock := widget.NewLabel("")
w.SetContent(clock)
//将标签的内容设置为当前时间 Time.Format
formatted := time.Now().Format("Time: 03:04:05")
clock.SetText(formatted)

窗口处理

  • 使用App.NewWindow()创建窗口

  • 使用show()展示

  • 默认窗体大小就是其Content面板上元素的大小。可以使用Window.Resize()方法设置窗体大小,传入一个宽和高,这个宽高不会受设备实际像素影响。例如让一个窗口显示默认正方形(桌面环境可能存在导致窗口小于请求的限制;移动设备通常会忽略窗体大小,因为移动设备只能以全屏显示)

    1
    w.Resize(fyne.NewSize(100, 100))

设置多窗口

  • 创建多个窗口,并分别调用show()函数
  • 使用WindowSetMaster()函数设置主窗口
  • 可以在一个窗口内创建一个按钮,使按钮打开新窗口,新窗口会出现在当前活动内容之上。

参考教程

  1. Go 每日一库之 fyne - 知乎 (zhihu.com)
-------------终了-------------

欢迎关注我的其它发布渠道