## 安装
```
go mod init fyneDemo
go get fyne.io/fyne
```
## 各种软件包说明
### fyne
1. 用途:提供所有fyne代码中共有的基本定义,包含数据类型和接口
| 命令 | 说明 |
| ------------ | ------------ |
| `fyne.NewSize(200, 400)` | 设置应用的宽高,需配合`widget`使用 |
| `fyne.NewPos(20, 20)` | 设置一个偏移量 |
| `container := fyne.NewContainer(text1, text2, text3)` | 新建一个容器 |
### app
1. 用途:提供用于启动新应用程序的api
2.
| 命令 | 说明 |
| ------------ | ------------ |
| `myApp := app.New()` | 新建一个应用 |
| `myWindow := myApp.NewWindow("hello")` | 新建一个窗口 |
| `myWindow.ShowAndRun()` | 显示窗口,并运行,等同于`myWindow.Show()`和`myApp.Run()`,若有第二个窗口,则第二个窗口只可调用`myWindow.Show()`方法 |
| `myWindow.SetContent()` | 给窗口设置内容 |
### widget
1. 用途:提供各种各样的小部件(如按钮、标签等)
| 命令 | 说明 |
| ------------ | ------------ |
| `w.Resize(fyne.NewSize(200, 400))` | 设置宽高 |
| `widget.NewHyperlink("百度", url)` | 设置一个超链接,需配合`url, _ := url.Parse("http://www.baidu.com")`使用 |
| `content := widget.NewLabel("text")` | 设置一段文字 |
| `content := widget.NewButton("click me", clickFunc())` | 设置一个按钮,`clickFunc()为点击事件后进行的操作` |
| `content := widget.NewButtonWithIcon("Home", theme.HomeIcon(), clickFunc())` | 设置一个带图标的点击按钮 |
| `content := widget.NewVBox()` | 创建一个盒子 |
| `content.Append()` | 追加元素 |
| `input := widget.NewEntry()` | 设置一个输入框 |
| `textArea := widget.NewMultiLineEntry()` | 设置多行输入框 |
| `input.SetPlaceHolder("Enter text...")` | 设置输入框的提示内容 |
| `check := widget.NewCheck("Optional", test()` | 设置复选框 |
| `radio := widget.NewRadio([]string{"Option 1", "Option 2"}, test())` | 设置单选框 |
| `combo := widget.NewSelect([]string{"Option 1", "Option 2"}, test())` | 设置select选择器|
| `progress := widget.NewProgressBar()` | 设置进度条 |
| `progress.SetValue(i)` | 设置进度 |
| `infinite := widget.NewProgressBarInfinite()` | 设置无限进度条 |
设置一个表单
```
form := &widget.Form{
Items: []*widget.FormItem{ // we can specify items in the constructor
{"Entry", entry}},
OnSubmit: func() { // optional, handle form submission
log.Println("Form submitted:", entry.Text)
log.Println("multiline:", textArea.Text)
myWindow.Close()
},
}
// we can also append items
form.Append("Text", textArea)
```
设置tab栏
```
tabs := widget.NewTabContainer(
widget.NewTabItem("Tab 1", widget.NewLabel("Hello")),
widget.NewTabItem("Tab 2", widget.NewLabel("World!")))
tabs.SetTabLocation(widget.TabLocationLeading) // 设置为竖向的tab
```
设置工具栏
```
toolbar := widget.NewToolbar(
widget.NewToolbarAction(theme.DocumentCreateIcon(), func() {
log.Println("New document")
}),
widget.NewToolbarSeparator(),
widget.NewToolbarAction(theme.ContentCutIcon(), func() {}),
widget.NewToolbarAction(theme.ContentCopyIcon(), func() {}),
widget.NewToolbarAction(theme.ContentPasteIcon(), func() {}),
widget.NewToolbarSpacer(),
widget.NewToolbarAction(theme.HelpIcon(), func() {
log.Println("Display help")
}),
)
content := fyne.NewContainerWithLayout(layout.NewBorderLayout(toolbar, nil, nil, nil),
toolbar, widget.NewLabel("Content"))
```
### canvas
1. 用途:提供绘图api
| 命令 | 说明 |
| ------------ | ------------ |
| `myCanvas := myWindow.Canvas()` | 创建一个新画布 |
| `text := canvas.NewText("Text", color.White)` | 创建白色的文字 |
| `text.TextStyle.Bold = true` | 设置文字的样式 |
| `text2.Move(fyne.NewPos(20, 20))` | 移动文字 |
| `canvas.NewRectangle(color.Black)` | 创建一个矩形 |
| `canvas.NewLine(color.Gray{0x66})` | 创建一条线段 |
| `circle := canvas.NewCircle(color.White)` | 创建一个圆 |
| `canvas.NewImageFromResource(theme.FyneLogo())` | 创建一个图片资源 |
| `myCanvas.SetContent(text)` | 将文字添加到画布上 |
### dialog
1. 用途:处理弹出框
设置一个询问按钮
```
dialog.NewConfirm("标题", "内容", func(checked bool) {
fmt.Println("333")
}, myWindow)
```
### layout
1. 用途:提供各种布局使用的容器
设置grid布局
```
text1 := canvas.NewText("1", color.White)
text2 := canvas.NewText("2", color.White)
text3 := canvas.NewText("3", color.White)
grid := fyne.NewContainerWithLayout(layout.NewGridLayout(2),
text1, text2, text3)
```
设置`fixed`布局
```
text1 := canvas.NewText("1", color.White)
text2 := canvas.NewText("2", color.White)
text3 := canvas.NewText("3", color.White)
grid := fyne.NewContainerWithLayout(layout.NewFixedGridLayout(fyne.NewSize(50, 50)),
text1, text2, text3)
```
设置边界布局
```
top := canvas.NewText("top bar", color.White)
left := canvas.NewText("left", color.White)
middle := canvas.NewText("content", color.White)
content := fyne.NewContainerWithLayout(layout.NewBorderLayout(top, nil, left, nil),
top, left, middle)
```
设置表单布局
```
label1 := canvas.NewText("Label 1", color.Black)
value1 := canvas.NewText("Value", color.White)
label2 := canvas.NewText("Label 2", color.Black)
value2 := canvas.NewText("Something", color.White)
grid := fyne.NewContainerWithLayout(layout.NewFormLayout(),
label1, value1, label2, value2)
```
设置居中布局
```
img := canvas.NewImageFromResource(theme.FyneLogo())
img.FillMode = canvas.ImageFillOriginal
text := canvas.NewText("Overlay", color.Black)
content := fyne.NewContainerWithLayout(layout.NewCenterLayout(),
img, text)
```
设置占满布局
```
img := canvas.NewImageFromResource(theme.FyneLogo())
text := canvas.NewText("Overlay", color.Black)
content := fyne.NewContainerWithLayout(layout.NewMaxLayout(),
img, text)
```
### test
1. 用途:测试包
- php
- 安全
- php7
- 特性
- 编译安装
- 源码整体框架
- 基本变量
- thinkphp3.2.3
- thinkphp5.0
- thinkphp6.0
- laravel
- 配置
- 路由
- artisan控制台
- eloquent
- tinker
- composer
- 加密解密
- 小知识点
- 数组
- string
- 代码简洁之道
- 编译
- 语法糖
- lumen
- smarty
- 错题集
- 算法及数据结构
- 线性表结构
- 插入排序
- 冒泡排序
- 数据库
- mysql
- oracle
- PostgreSQL
- redis
- sqlserver
- 前端
- 备忘
- js
- nodejs
- vue
- css
- electron
- vue
- 语法糖
- colorui使用笔记
- 微信小程序
- 操作系统
- windows
- bat
- 快捷键
- linux
- sed
- 问题解决
- git
- docker
- docker-compose
- 正则表达式
- ps
- lua
- 协议相关
- 问题思索
- Golang
- 测试
- 读取和写入json配置文件
- 类
- 接口
- mod
- gin
- fyne
- 禅道二次开发
- 服务
- apache
- 漏洞配置
- http server优化
- nginx
- 安装
- 面试题库
- freeswitch