Fyne 系列 08:文件、对话框与系统交互
cbowen

桌面工具经常需要打开文件、保存文件、选择目录、显示错误和进度。Fyne 的 dialogstorageclipboard 等 API 可以覆盖这些常用需求。

打开文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dialog.ShowFileOpen(func(reader fyne.URIReadCloser, err error) {
if err != nil {
dialog.ShowError(err, w)
return
}
if reader == nil {
return
}
defer reader.Close()

data, err := io.ReadAll(reader)
if err != nil {
dialog.ShowError(err, w)
return
}
entry.SetText(string(data))
}, w)

用户取消选择时,reader 会是 nil

保存文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dialog.ShowFileSave(func(writer fyne.URIWriteCloser, err error) {
if err != nil {
dialog.ShowError(err, w)
return
}
if writer == nil {
return
}
defer writer.Close()

_, err = writer.Write([]byte(entry.Text))
if err != nil {
dialog.ShowError(err, w)
}
}, w)

确认框和错误框

1
2
3
4
5
dialog.ShowConfirm("删除", "确定删除这个文件吗?", func(ok bool) {
if ok {
// 执行删除
}
}, w)

错误提示:

1
dialog.ShowError(err, w)

剪贴板

1
2
3
w.Clipboard().SetContent("复制的内容")
text := w.Clipboard().Content()
fmt.Println(text)

通知

1
2
3
4
a.SendNotification(&fyne.Notification{
Title: "任务完成",
Content: "文件已经处理完成",
})

系统交互相关功能在不同平台上可能表现略有差异,写文章时最好说明自己验证过的平台。

 评论
评论插件加载失败
正在加载评论插件