网上示例较少,好在有中文文档可以啃
这个示例主要是添加了菜单,弹出消息框,文件打开对话框等
package main
import (
"context"
"fmt"
"os"
"github.com/wailsapp/wails/v2/pkg/menu"
"github.com/wailsapp/wails/v2/pkg/menu/keys"
"github.com/wailsapp/wails/v2/pkg/runtime"
)
type App struct {
ctx context.Context
ti *TrayIcon
}
// NewApp 创建一个新的 App 应用程序
func NewApp() *App {
return &App{}
}
func (b *App) GetCtx() context.Context {
return b.ctx
}
// startup 在应用程序启动时调用
func (b *App) startup(ctx context.Context) {
// 在这里执行初始化设置
b.ctx = ctx
b.ti = NewTrayIcon()
b.ti.BalloonClickFunc = b.showWindow
b.ti.TrayClickFunc = b.showWindow
go b.ti.RunTray()
// 菜单------------------------------------------------------
Update := menu.Text("检查更新", nil, HelpUpdate)
Update.Disabled = true
Fullscreen := menu.Checkbox("全屏显示", true, nil, HelpFullScreen)
myMenu := menu.NewMenuFromItems(
menu.SubMenu("文件(&F)", menu.NewMenuFromItems(
menu.Text("打开文件(&O)", keys.CmdOrCtrl("o"), OpenFile),
menu.Separator(),
menu.Text("退出", keys.CmdOrCtrl("q"), func(_ *menu.CallbackData) {
runtime.Quit(ctx)
}),
)),
menu.SubMenu("帮助(&H)", menu.NewMenuFromItems(
menu.Text("如何使用", nil, HelpUse),
Update,
Fullscreen,
menu.Text("关于我们", nil, HelpAbout),
)),
)
runtime.MenuSetApplicationMenu(ctx, myMenu)
}
func HelpFullScreen(c *menu.CallbackData) {
fmt.Println("----", c.MenuItem.Checked)
}
func HelpUpdate(c *menu.CallbackData) {
fmt.Println("----", c.MenuItem.Label)
}
func OpenFile(c *menu.CallbackData) {
fmt.Println("----", c.MenuItem.Label)
}
func HelpUse(c *menu.CallbackData) {
fmt.Println("----", c.MenuItem.Label)
}
func HelpAbout(c *menu.CallbackData) {
fmt.Println("----", c.MenuItem.Label)
}
// ------------------------------------------------------
// domReady 在前端Dom加载完毕后调用
func (b *App) domReady(ctx context.Context) {
// 在这里添加你的操作
}
func (b *App) showWindow() {
//runtime.LogDebug(a.ctx, "showWindow")
runtime.WindowShow(b.ctx)
}
// 在应用程序终止时被调用
func (b *App) shutdown(ctx context.Context) {
// 在此处做一些资源释放的操作
}
// Greet returns a greeting for the given name
func (b *App) Greet(name string) string {
return fmt.Sprintf("Hello %s, It's show time!", name)
}
func (b *App) Quit() {
b.ti.Dispose()
runtime.Quit(b.ctx)
}
// 打开文件对话框
func (b *App) OpenFile() {
var d runtime.OpenDialogOptions
cur, _ := os.Getwd()
d.DefaultDirectory = cur
d.Title = "打开文件"
fmt.Println(runtime.OpenFileDialog(b.ctx, d))
}
func (b *App) MessageBox() {
fmt.Println(runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
Type: runtime.InfoDialog,
Title: "一个消息",
Message: "这是一个消息",
}))
}