go桌面框架Fyne最全api文档

Fyne 是一个 Go 语言的跨平台 GUI 库

相关命令

//全局安装fyne打包工具
go install fyne.io/fyne/v2/cmd/fyne@latest

// 引入fyne库
go get fyne.io/fyne/v2@latest
go mod tidy

//以窗口形式启动
go run main.go
//以手机模拟器形式启动
go run -tags mobile main.go

//打包
//桌面端
fyne package -os windows -icon icon.png

//移动端
fyne package -os android -appID my.domain.appname
fyne install -os android

fyne package -os ios -appID my.domain.appname
fyne package -os iossimulator -appID my.domain.appname

基本示例

package main

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

func main() {
	a := app.New()
	w := a.NewWindow("Hello")

	hello := widget.NewLabel("Hello Fyne!")
	w.SetContent(container.NewVBox(
		hello,
		widget.NewButton("Hi!", func() {
			hello.SetText("Welcome :)")
		}),
	))

	w.ShowAndRun()
}
1. app
  • app.New():创建一个新的 Fyne 应用实例。
  • app.NewWithID(id string):创建带有唯一标识的应用实例,用于在不同会话间共享数据。
  • app.NewWindow(title string):为应用创建一个新窗口。
2. canvas
  • canvas.NewText(text string, color color.Color):创建文本元素,可自定义颜色。
  • canvas.NewRectangle(color color.Color):创建一个矩形图形,可用于绘制背景或形状。
  • canvas.NewCircle(color color.Color):创建一个圆形图形。
  • canvas.NewImageFromFile(filename string):加载并显示文件中的图像。
  • canvas.NewLine(color color.Color):创建一条直线,用于简单的图形绘制。
3. container
  • container.NewVBox(objects ...fyne.CanvasObject):创建一个垂直布局容器,按顺序从上到下排列内容。
  • container.NewHBox(objects ...fyne.CanvasObject):创建一个水平布局容器,按顺序从左到右排列内容。
  • container.NewGridWithRows(rows int, objects ...fyne.CanvasObject):按指定行数创建网格布局容器。
  • container.NewTabContainer(tabs ...*container.TabItem):创建带选项卡的容器。
  • container.NewBorderContainer(top, bottom, left, right fyne.CanvasObject, content fyne.CanvasObject):创建边框布局容器,四边可固定元素,中间为内容区域。
4. dialog
  • dialog.NewConfirm(title string, message string, onConfirm func(bool), parent fyne.Window):确认对话框,带确认和取消按钮。
  • dialog.NewInformation(title string, message string, parent fyne.Window):信息对话框,用于显示信息性消息。
  • dialog.ShowFileOpen(callback func(fyne.URIReadCloser, error), parent fyne.Window):打开文件选择器对话框。
  • dialog.ShowFileSave(callback func(fyne.URIWriteCloser, error), parent fyne.Window):打开文件保存对话框。
  • dialog.ShowCustom(title string, dismiss string, content fyne.CanvasObject, parent fyne.Window):自定义对话框,允许自定义内容。
5. widget
  • widget.NewLabel(text string):创建文本标签。
  • widget.NewButton(label string, tapped func()):创建按钮,点击时触发指定事件。
  • widget.NewEntry():创建文本输入框,用户可输入单行文本。
  • widget.NewPasswordEntry():创建密码输入框,输入的文本被掩盖。
  • widget.NewForm(items ...*widget.FormItem):创建表单,支持不同类型的输入控件。
  • widget.NewSelect(options []string, changed func(string)):下拉选择框,提供多个选择项。
  • widget.NewCheck(label string, changed func(bool)):复选框,可选中或取消选中。
  • widget.NewRadio(options []string, selected func(string)):单选框组,提供多个单选项。
  • widget.NewSlider(min, max float64):滑动条,可选择范围值。
  • widget.NewProgressBar():进度条,用于表示任务的进度。
6. theme
  • theme.DefaultTheme():获取默认主题。
  • theme.NewLightTheme():获取亮色主题。
  • theme.NewDarkTheme():获取暗色主题。
  • theme.Icon(name fyne.ThemeIconName):获取系统内置图标。
  • theme.Font(size int):获取字体样式和大小。
7. layout
  • layout.NewSpacer():创建一个空白填充区域,用于调整组件间的间距。
  • layout.NewVBoxLayout():垂直布局,将内容从上到下排列。
  • layout.NewHBoxLayout():水平布局,将内容从左到右排列。
  • layout.NewGridLayout(rows int):网格布局,按指定行数排列内容。
  • layout.NewBorderLayout(top, bottom, left, right fyne.CanvasObject):边框布局,四边固定内容。
8. fyne 包(核心接口)
  • fyne.App:应用程序接口,用于启动和管理窗口。
  • fyne.Window:窗口接口,表示应用程序中的窗口。
  • fyne.CanvasObject:所有UI组件的基本接口。
  • fyne.Container:容器接口,用于包含和布局多个组件。
  • fyne.Theme:主题接口,用于自定义应用程序外观。
  • fyne.URIReadCloserfyne.URIWriteCloser:文件读写接口,用于读取和保存文件。

实战示例

1. 应用程序基础设置(app 包)
  • 创建应用实例、窗口,并设置内容。

    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”) // 创建窗口实例
    label := widget.NewLabel(“Hello, Fyne”) // 创建标签

    myWindow.SetContent(container.NewVBox(
    	label,
    	widget.NewButton("点击我", func() {
    		label.SetText("按钮被点击了!")
    	}),
    )) // 将标签和按钮加入窗口内容
    
    myWindow.ShowAndRun() // 显示窗口并运行应用
    

    }

2. 文本输入框与按钮(widget 包)
  • 创建带输入框和按钮的简单表单,点击按钮显示输入内容。

    package main

    import (
    “fmt”
    “fyne.io/fyne/v2/app”
    “fyne.io/fyne/v2/container”
    “fyne.io/fyne/v2/widget”
    )

    func main() {
    myApp := app.New()
    myWindow := myApp.NewWindow(“输入框示例”)

    entry := widget.NewEntry()
    entry.SetPlaceHolder("请输入内容")
    
    button := widget.NewButton("提交", func() {
    	fmt.Println("输入内容:", entry.Text)
    })
    
    myWindow.SetContent(container.NewVBox(
    	entry,
    	button,
    ))
    
    myWindow.ShowAndRun()
    

    }

3. 文件选择对话框(dialog 包)
  • 打开文件选择器,选择文件后显示文件路径。

    package main

    import (
    “fmt”
    “fyne.io/fyne/v2/app”
    “fyne.io/fyne/v2/container”
    “fyne.io/fyne/v2/dialog”
    “fyne.io/fyne/v2/widget”
    )

    func main() {
    myApp := app.New()
    myWindow := myApp.NewWindow(“文件选择器示例”)

    label := widget.NewLabel("文件路径会在这里显示")
    button := widget.NewButton("选择文件", func() {
    	dialog.ShowFileOpen(func(reader fyne.URIReadCloser, err error) {
    		if err == nil && reader != nil {
    			label.SetText("文件路径: " + reader.URI().Path())
    			fmt.Println("选择的文件路径:", reader.URI().Path())
    		}
    	}, myWindow)
    })
    
    myWindow.SetContent(container.NewVBox(
    	button,
    	label,
    ))
    
    myWindow.ShowAndRun()
    

    }

4. 布局示例(container 包)
  • 使用 HBoxVBox 布局容器。

    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(“布局示例”)

    hBox := container.NewHBox(
    	widget.NewButton("左", nil),
    	widget.NewButton("中", nil),
    	widget.NewButton("右", nil),
    )
    
    vBox := container.NewVBox(
    	widget.NewLabel("上"),
    	hBox,
    	widget.NewLabel("下"),
    )
    
    myWindow.SetContent(vBox)
    myWindow.ShowAndRun()
    

    }

5. 进度条(widget 包)
  • 创建一个进度条,并模拟进度变化。

    package main

    import (
    “time”
    “fyne.io/fyne/v2/app”
    “fyne.io/fyne/v2/container”
    “fyne.io/fyne/v2/widget”
    )

    func main() {
    myApp := app.New()
    myWindow := myApp.NewWindow(“进度条示例”)

    progress := widget.NewProgressBar()
    progress.SetValue(0.0)
    
    myWindow.SetContent(container.NewVBox(
    	progress,
    ))
    
    go func() {
    	for i := 0.0; i <= 1.0; i += 0.1 {
    		time.Sleep(time.Second)
    		progress.SetValue(i)
    	}
    }()
    
    myWindow.ShowAndRun()
    

    }

6. 选项卡布局(container 包)
  • 创建带有多个选项卡的窗口。

    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(“选项卡示例”)

    tab1 := container.NewTabItem("Tab 1", widget.NewLabel("这是第一个选项卡"))
    tab2 := container.NewTabItem("Tab 2", widget.NewLabel("这是第二个选项卡"))
    
    tabContainer := container.NewAppTabs(tab1, tab2)
    
    myWindow.SetContent(tabContainer)
    myWindow.ShowAndRun()
    

    }

7. 自定义对话框(dialog 包)
  • 创建带自定义内容的对话框。

    package main

    import (
    “fyne.io/fyne/v2/app”
    “fyne.io/fyne/v2/container”
    “fyne.io/fyne/v2/dialog”
    “fyne.io/fyne/v2/widget”
    )

    func main() {
    myApp := app.New()
    myWindow := myApp.NewWindow(“自定义对话框示例”)

    button := widget.NewButton("打开对话框", func() {
    	content := widget.NewLabel("这是一个自定义对话框")
    	dialog.ShowCustom("标题", "关闭", content, myWindow)
    })
    
    myWindow.SetContent(container.NewVBox(
    	button,
    ))
    
    myWindow.ShowAndRun()
    

    }

应用打包

使用 Fyne 打包 Go 应用程序可以通过 fyne 的命令行工具完成。该工具支持将应用程序打包成可执行文件,并生成不同平台的包格式(如 .app.exe 等)。

步骤 1:安装 fyne 命令行工具

安装 fyne 命令行工具。如果未安装,可以通过以下命令安装:

go install fyne.io/fyne/v2/cmd/fyne@latest
步骤 2:配置应用程序的图标和元数据

在打包之前,最好为应用程序设置图标和元数据,fyne 使用 fyne package 命令自动加载这些信息。可以通过设置 fyne 提供的以下标签完成配置。

创建一个 fyne.yml 文件(或直接在 go 文件中使用注释)并填写以下内容:

配置文件:fyne.yml
name: MyApp                  # 应用名称
icon: "icon.png"             # 应用图标,放在项目根目录
version: "1.0.0"             # 版本号
步骤 3:构建并打包应用程序

fyne 工具支持跨平台构建,以下是常见平台的打包方法。

1. 本地平台打包

在项目目录中运行以下命令,将应用程序打包成当前系统的可执行文件:

fyne package

执行后,会在当前目录生成一个对应平台的可执行文件:

  • Windows:生成 .exe 文件。
  • macOS:生成 .app 文件。
  • Linux:生成标准的可执行文件。
2. 指定平台打包

fyne 支持交叉编译和打包。可以使用环境变量来指定目标平台:

打包 Windows 应用程序
GOOS=windows GOARCH=amd64 fyne package -os windows
打包 macOS 应用程序
GOOS=darwin GOARCH=amd64 fyne package -os darwin
打包 Linux 应用程序
GOOS=linux GOARCH=amd64 fyne package -os linux
3. 指定输出文件名

可以使用 -output 标志指定生成文件的名称,例如:

fyne package -output MyApp
步骤 4:生成安装包(可选)

fyne 还支持生成平台专用的安装包,例如 macOS 的 .dmg 文件或 Windows 的 .msi 文件。可以通过以下方式生成这些安装包:

Windows 的 .msi 安装包
fyne package -os windows -icon icon.png -appID "com.mycompany.myapp" -install
macOS 的 .dmg 安装包
fyne package -os darwin -icon icon.png -appID "com.mycompany.myapp" -install
Linux 的 .deb 安装包
fyne package -os linux -icon icon.png -appID "com.mycompany.myapp" -install
示例:打包一个 Windows 可执行文件

假设您有一个 Windows 环境,运行以下命令来生成带图标的 .exe 文件:

fyne package -os windows -icon icon.png
步骤 5:测试和发布

生成的应用程序可以直接运行以测试功能。确保在每个平台上测试以验证应用的兼容性,之后即可将打包的文件上传至发布平台(如 GitHub、应用商店或公司内部系统)。

通过 fyne 的打包工具,可以方便地将 Fyne 应用分发到不同平台,支持跨平台开发的需求。

运行效果

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值