参数 #
options.App 结构包含应用程序配置。 它被传递给 wails.Run() 方法:
import (
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
"github.com/wailsapp/wails/v2/pkg/options/linux"
"github.com/wailsapp/wails/v2/pkg/options/mac"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
func main() {
err := wails.Run(&options.App{
Title: "Menus Demo",
Width: 800,
Height: 600,
DisableResize: false,
Fullscreen: false,
WindowStartState: options.Maximised,
Frameless: true,
MinWidth: 400,
MinHeight: 400,
MaxWidth: 1280,
MaxHeight: 1024,
StartHidden: false,
HideWindowOnClose: false,
BackgroundColour: &options.RGBA{R: 0, G: 0, B: 0, A: 255},
AlwaysOnTop: false,
AssetServer: &assetserver.Options{
Assets: assets,
Handler: assetsHandler,
Middleware: assetsMidldeware,
},
Menu: app.applicationMenu(),
Logger: nil,
LogLevel: logger.DEBUG,
LogLevelProduction: logger.ERROR,
OnStartup: app.startup,
OnDomReady: app.domready,
OnShutdown: app.shutdown,
OnBeforeClose: app.beforeClose,
CSSDragProperty: "--wails-draggable",
CSSDragValue: "drag",
EnableDefaultContextMenu: false,
EnableFraudulentWebsiteDetection: false,
Bind: []interface{}{
app,
},
EnumBind: []interface{}{
AllWeekdays,
},
ErrorFormatter: func(err error) any { return err.Error() },
SingleInstanceLock: &options.SingleInstanceLock{
UniqueId: "c9c8fd93-6758-4144-87d1-34bdb0a8bd60",
OnSecondInstanceLaunch: app.onSecondInstanceLaunch,
},
DragAndDrop: &options.DragAndDrop{
EnableFileDrop: false,
DisableWebViewDrop: false,
CSSDropProperty: "--wails-drop-target",
CSSDropValue: "drop",
},
Windows: &windows.Options{
WebviewIsTransparent: false,
WindowIsTranslucent: false,
BackdropType: windows.Mica,
DisablePinchZoom: false,
DisableWindowIcon: false,
DisableFramelessWindowDecorations: false,
WebviewUserDataPath: "",
WebviewBrowserPath: "",
Theme: windows.SystemDefault,
CustomTheme: &windows.ThemeSettings{
DarkModeTitleBar: windows.RGB(20, 20, 20),
DarkModeTitleText: windows.RGB(200, 200, 200),
DarkModeBorder: windows.RGB(20, 0, 20),
LightModeTitleBar: windows.RGB(200, 200, 200),
LightModeTitleText: windows.RGB(20, 20, 20),
LightModeBorder: windows.RGB(200, 200, 200),
},
// ZoomFactor is the zoom factor for the WebView2. 这是匹配 Edge 用户激活放大或缩小的选项
ZoomFactor: float64,
// IsZoomControlEnabled enables the zoom factor to be changed by the user.
IsZoomControlEnabled: bool,
// User messages that can be customised
Messages: *windows.Messages
// OnSuspend is called when Windows enters low power mode
OnSuspend: func()
// OnResume is called when Windows resumes from low power mode
OnResume: func(),
// Disable GPU hardware acceleration for the webview
WebviewGpuDisabled: false,
},
Mac: &mac.Options{
TitleBar: &mac.TitleBar{
TitlebarAppearsTransparent: true,
HideTitle: false,
HideTitleBar: false,
FullSizeContent: false,
UseToolbar: false,
HideToolbarSeparator: true,
OnFileOpen: app.onFileOpen,
OnUrlOpen: app.onUrlOpen,
},
Appearance: mac.NSAppearanceNameDarkAqua,
WebviewIsTransparent: true,
WindowIsTranslucent: false,
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
Linux: &linux.Options{
Icon: icon,
WindowIsTranslucent: false,
WebviewGpuPolicy: linux.WebviewGpuPolicyAlways,
ProgramName: "wails"
},
Debug: options.Debug{
OpenInspectorOnStartup: false,
},
})
if err != nil {
log.Fatal(err)
}
}
窗口相关 #
标题 #
窗口标题栏中显示的文本。
- 名称:
Title - 类型:
string
尺寸相关 #
宽度 #
窗口的初始宽度。
- 名称:
Width - 类型:
int - 默认值:
1024
高度 #
窗口的初始高度。
- 名称:
Height - 类型:
int - 默认值:
768
最小宽度 #
这将设置窗口的最小宽度。 如果给出的值 Width 小于这个值,窗口将被设置为 MinWidth 默认值。
- 名称:
MinWidth - 类型:
int
最小高度 #
这将设置窗口的最小高度。 如果给出的值 Height 小于这个值,窗口将被设置为 MinHeight 默认值。
- 名称:
MinHeight - 类型:
int
最大宽度 #
这将设置窗口的最大宽度。 如果给出的值 Width 大于这个值,窗口将被设置为 MaxWidth 默认值。
名称:MaxWidth
类型:int
最大高度 #
这将设置窗口的最大高度。 如果给出的值 Height 大于这个值,窗口将被设置为 MaxHeight 默认值。
名称:MaxHeight
类型:int
禁用调整窗口尺寸 #
默认情况下,主窗口可调整大小。 将此设置为 true 将使其保持固定大小。
- 名称:
DisableResize - 类型:
bool
窗口启动状态 #
定义窗口在启动时应如何呈现。
| 值 | Win | Mac | Lin |
|---|---|---|---|
Fullscreen(全屏) |
✅ | ✅ | ✅ |
Maximised(最大化) |
✅ | ✅ | ✅ |
Minimised(最小化) |
✅ | ❌ | ✅ |
- 名称:
WindowStartState - 类型:
options.WindowStartState
无边框 #
设置为true时,窗口将没有边框或标题栏。
- 名称:
Frameless - 类型:
bool
启动时隐藏窗口 #
设置为 true 时,应用程序将被隐藏。
- 名称:
StartHidden - 类型:
bool
关闭时隐藏窗口 #
默认情况下,关闭窗口将关闭应用程序。 将此设置为 true 意味着关闭窗口将隐藏窗口。
- 名称:
HideWindowOnClose - 类型:
bool
背景颜色 #
此值是窗口的默认背景颜色。 示例:options.NewRGBA(255,0,0,128) ,红色,透明度为 50%
- 名称:
BackgroundColour - 类型:
*options.RGBA - 默认值:
white
窗口固定在最顶层 #
窗口在失去焦点时应保持在其他窗口之上。
名称:AlwaysOnTop
类型:bool
菜单 #
应用程序要使用的菜单。
- 名称:
Menu - 类型:
*menu.Menu
日志相关 #
应用程序要使用的记录器。
- 名称:
Logger - 类型:
logger.Logger - 默认值:
Logs to Stdout
日志级别 #
默认日志级别。
- 名称:
LogLevel - 类型:
logger.LogLevel - 默认值:开发模式为
Info, 生产模式为Error
生产日志级别 #
生产构建的默认日志级别。
- 名称:
LogLevelProduction - 类型:
logger.LogLevel - 默认值:
Error
生命周期相关 #
应用启动回调 #
此回调在前端创建之后调用,但在 index.html 加载之前调用。 它提供了应用程序上下文。
- 名称:
OnStartup - 类型:
func(ctx context.Context)
前端 Dom 加载完成回调 #
在前端加载完毕 index.html 及其资源后调用此回调。 它提供了应用程序上下文。
- 名称:
OnDomReady - 类型:
func(ctx context.Context)
应用退出回调 #
在前端被销毁之后,应用程序终止之前,调用此回调。 它提供了应用程序上下文。
- 名称:
OnShutdown - 类型:
func(ctx context.Context)
应用关闭前回调 #
如果设置了此回调,它将在通过单击窗口关闭按钮或调用runtime.Quit即将退出应用程序时被调用。
- 名称:
OnBeforeClose - 类型:
func(ctx context.Context) bool - 返回
true将导致应用程序继续,false将继续正常关闭。这有助于与用户确认他们希望退出程序。
func (b *App) beforeClose(ctx context.Context) (prevent bool) {
dialog, err := runtime.MessageDialog(ctx, runtime.MessageDialogOptions{
Type: runtime.QuestionDialog,
Title: "Quit?",
Message: "Are you sure you want to quit?",
})
if err != nil {
return false
}
return dialog != "Yes"
}
窗口拖动相关 #
CSS 拖动属性 #
指示用于标识哪些元素可用于拖动窗口的 CSS 属性。 默认值:--wails-draggable
- 名称:
CSSDragProperty - 类型:
string
CSS 拖动值 #
指示 CSSDragProperty 样式应该具有什么值才能拖动窗口。 默认值:drag
- 名称:
CSSDragValue - 类型:
string
启用欺诈网站检测 #
EnableFraudulentWebsiteDetection启用了欺诈性内容的扫描服务,如恶意软件或网络钓鱼尝试。这些服务可能会从您的应用程序发送信息,如导航到的URL,以及可能的其他内容,发送到苹果和微软的云服务。
- 名称:
EnableFraudulentWebsiteDetection - 类型:
bool
绑定前端相关 #
绑定 #
定义需要绑定到前端的方法的结构体实例的切片。
- 名称:
Bind - 类型:
[]interface{}
枚举绑定 #
需要绑定到前端的枚举数组的切片。
- 名称:
EnumBind - 类型:
[]interface{}
单实例锁定 #
启用单实例锁定。这意味着您的应用程序一次只能运行一个实例。
名称:SingleInstanceLock
类型:*options.SingleInstanceLock
独特的ID #
此ID用于在Windows和macOS上生成互斥名称,在Linux上生成dbus名称。使用UUID来确保ID是唯一的。
名称:UniqueId
类型:string
在SecondInstanceLaunch上 #
启动应用程序的第二个实例时调用的回调。
名称:OnSecondInstanceLaunch
类型:func(secondInstanceData SecondInstanceData)
拖放 #
定义窗口上拖放事件的行为。
- 名称:
DragAndDrop - 类型:
options.DragAndDrop
启用文件Drop #
EnableFileDrop启用了wails的拖放功能,该功能可以返回文件的绝对路径中的拖放。
- 名称:
EnableFileDrop - 类型:
bool - 默认:
false
Windows Option #
- 名称:
Windows - 类型:
*windows.Options
Webview 透明 #
当使用0的alpha值时,将此设置为true将使webview背景透明。这意味着,如果您在CSS中使用rgba(0,0,0,0)作为background-color,主机窗口将显示。
名称:WebviewIsTransparent
类型:bool
窗口透明 #
将此设置为true将使窗口背景半透明。通常与WebviewIsTransparent结合使用。
名称:WindowIsTranslucent
类型:bool
禁用窗口图标 #
将此设置为true将删除标题栏左上角的图标。
名称:DisableWindowIcon
类型:bool