mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 13:02:04 +08:00
526 lines
14 KiB
Plaintext
526 lines
14 KiB
Plaintext
---
|
||
title: 参数选项
|
||
sidebar_position: 3
|
||
---
|
||
|
||
# 参数选项
|
||
|
||
## 应用程序参数选项
|
||
|
||
该`Options.App`结构包含应用程序配置。它被传递给`wails.Run()`方法:
|
||
|
||
```go title="Example"
|
||
import "github.com/wailsapp/wails/v2/pkg/options"
|
||
|
||
func main() {
|
||
|
||
err := wails.Run(&options.App{
|
||
Title: "Menus Demo",
|
||
Width: 800,
|
||
Height: 600,
|
||
DisableResize: false,
|
||
Fullscreen: false,
|
||
Frameless: true,
|
||
MinWidth: 400,
|
||
MinHeight: 400,
|
||
MaxWidth: 1280,
|
||
MaxHeight: 1024,
|
||
StartHidden: false,
|
||
HideWindowOnClose: false,
|
||
RGBA: &options.RGBA{R: 0, G: 0, B: 0, A: 255},
|
||
AlwaysOnTop: false,
|
||
Assets: assets,
|
||
Menu: app.applicationMenu(),
|
||
Logger: nil,
|
||
LogLevel: logger.DEBUG,
|
||
OnStartup: app.startup,
|
||
OnDomReady: app.domready,
|
||
OnShutdown: app.shutdown,
|
||
OnBeforeClose: app.beforeClose,
|
||
WindowStartState: options.Maximised,
|
||
Bind: []interface{}{
|
||
app,
|
||
},
|
||
Windows: &windows.Options{
|
||
WebviewIsTransparent: false,
|
||
WindowIsTranslucent: false,
|
||
DisableWindowIcon: false,
|
||
DisableFramelessWindowDecorations: false,
|
||
WebviewUserDataPath: "",
|
||
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),
|
||
},
|
||
},
|
||
Mac: &mac.Options{
|
||
TitleBar: &mac.TitleBar{
|
||
TitlebarAppearsTransparent: true,
|
||
HideTitle: false,
|
||
HideTitleBar: false,
|
||
FullSizeContent: false,
|
||
UseToolbar: false,
|
||
HideToolbarSeparator: true,
|
||
},
|
||
Appearance: mac.NSAppearanceNameDarkAqua,
|
||
WebviewIsTransparent: true,
|
||
WindowIsTranslucent: false,
|
||
About: &mac.AboutInfo{
|
||
Title: "My Application",
|
||
Message: "© 2021 Me",
|
||
Icon: icon,
|
||
},
|
||
},
|
||
})
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
}
|
||
|
||
```
|
||
|
||
### 标题
|
||
|
||
名称:Title
|
||
|
||
类型:string
|
||
|
||
窗口标题栏中显示的文本。
|
||
|
||
### 宽度
|
||
|
||
名称:Width
|
||
|
||
类型:int
|
||
|
||
窗口的初始宽度。默认值:1024。
|
||
|
||
### 高度
|
||
|
||
名称:Height
|
||
|
||
类型:int
|
||
|
||
窗口的初始高度。默认值:768
|
||
|
||
### 禁用调整窗口尺寸
|
||
|
||
名称:DisableResize
|
||
|
||
类型:bool
|
||
|
||
默认情况下,主窗口可调整大小。将此设置为 `true` 将使其保持固定大小。
|
||
|
||
### 全屏
|
||
|
||
名称:Fullscreen
|
||
|
||
类型:bool
|
||
|
||
将此设置为 `true` 将在启动时使窗口全屏。
|
||
|
||
### 无边框
|
||
|
||
名称:Frameless
|
||
|
||
类型:bool
|
||
|
||
设置为`true`时,窗口将没有边框或标题栏。另请参阅[无边框窗口](../guides/frameless)。
|
||
|
||
### 最小宽度
|
||
|
||
名称:MinWidth
|
||
|
||
类型:int
|
||
|
||
这将设置窗口的最小宽度。如果给出的值`Width`小于这个值,窗口将被设置为`MinWidth`默认值。
|
||
|
||
### 最小高度
|
||
|
||
名称:MinHeight
|
||
|
||
类型:int
|
||
|
||
这将设置窗口的最小高度。如果给出的值`Height`小于这个值,窗口将被设置为`MinHeight`默认值。
|
||
|
||
### 最大宽度
|
||
|
||
名称:MaxWidth
|
||
|
||
类型:int
|
||
|
||
这将设置窗口的最大宽度。如果给出的值`Width`大于这个值,窗口将被设置为`MaxWidth`默认值。
|
||
|
||
### 最大高度
|
||
|
||
名称:MaxHeight
|
||
|
||
类型:int
|
||
|
||
这将设置窗口的最大高度。如果给出的值`Height`大于这个值,窗口将被设置为`MaxHeight`默认值。
|
||
|
||
### 启动时隐藏窗口
|
||
|
||
名称:StartHidden
|
||
|
||
类型:bool
|
||
|
||
设置为`true`时,应用程序将被隐藏,直到调用[显示窗口](../reference/runtime/window#显示窗口)。
|
||
|
||
### 关闭时隐藏窗口
|
||
|
||
名称:HideWindowOnClose
|
||
|
||
类型:bool
|
||
|
||
默认情况下,关闭窗口将关闭应用程序。将此设置为`true`意味着关闭窗口将隐藏窗口。
|
||
|
||
### RGBA
|
||
|
||
名称:RGBA
|
||
|
||
类型:int (0xRRGGBBAA) 示例:0xFF000088 - 透明度为 50% 的红色
|
||
|
||
该值是默认设置窗口的 RGBA 值。默认值:0xFFFFFFFF。
|
||
|
||
### 窗口固定在最顶层
|
||
|
||
名称:AlwaysOnTop
|
||
|
||
类型:bool
|
||
|
||
窗口在失去焦点时应保持在其他窗口之上。
|
||
|
||
### 资源
|
||
|
||
名称:Assets
|
||
|
||
类型:\*embed.FS
|
||
|
||
应用程序要使用的前端资源。需要一个`index.html`文件。
|
||
|
||
### 菜单
|
||
|
||
名称:Menu
|
||
|
||
类型:\*menu.Menu
|
||
|
||
应用程序要使用的菜单。[菜单参考](../reference/runtime/menu)中有关菜单的更多详细信息。
|
||
|
||
注意:在 Mac 上,如果未指定菜单,则将创建默认菜单。
|
||
|
||
### 日志
|
||
|
||
名称:Logger
|
||
|
||
类型:logger.Logger
|
||
|
||
默认值:Logger to Stdout
|
||
|
||
应用程序要使用的记录器。有关日志记录的更多详细信息,请参阅[日志参考](../reference/runtime/log)。
|
||
|
||
### 日志级别
|
||
|
||
名称:LogLevel
|
||
|
||
类型:logger.LogLevel
|
||
|
||
默认值:在开发模式下是`Info`,在生产模式下是`Error`。
|
||
|
||
默认日志级别。有关日志记录的更多详细信息,请参阅[设置日志等级](../reference/runtime/log#设置日志等级)。
|
||
|
||
### 应用启动回调
|
||
|
||
名称:OnStartup
|
||
|
||
类型:func(ctx context.Context)
|
||
|
||
此回调在前端创建之后调用,但在`index.html`加载之前调用。它提供了应用程序上下文。
|
||
|
||
### 前端 Dom 加载完成回调
|
||
|
||
名称:OnDomReady
|
||
|
||
类型:func(ctx context.Context)
|
||
|
||
在前端加载完毕`index.html`及其资源后调用此回调。它提供了应用程序上下文。
|
||
|
||
### 应用退出回调
|
||
|
||
名称:OnShutdown
|
||
|
||
类型:func(ctx context.Context)
|
||
|
||
在前端被销毁之后,应用程序终止之前,调用此回调。它提供了应用程序上下文。
|
||
|
||
### 关闭应用程序之前回调
|
||
|
||
名称:OnBeforeClose
|
||
|
||
类型:func(ctx context.Context) bool
|
||
|
||
如果设置了此回调,它将在通过单击窗口关闭按钮或调用`runtime.Quit`即将退出应用程序时被调用. 返回 `true` 将导致应用程序继续,`false` 将继续正常关闭。这有助于与用户确认他们希望退出程序。
|
||
|
||
示例:
|
||
|
||
```go title=windowsapp.go
|
||
func (b *App) beforeClose(ctx context.Context) (prevent bool) {
|
||
dialog, err := runtime.MessageDialog(ctx, runtime.MessageDialogOptions{
|
||
类型: runtime.QuestionDialog,
|
||
Title: "Quit?",
|
||
Message: "Are you sure you want to quit?",
|
||
})
|
||
|
||
if err != nil {
|
||
return false
|
||
}
|
||
return dialog != "Yes"
|
||
```
|
||
|
||
### 窗口启动状态
|
||
|
||
名称:WindowStartState
|
||
|
||
类型: options.WindowStartState
|
||
|
||
定义窗口在启动时应如何呈现。
|
||
|
||
| 值 | Win | Mac | Lin |
|
||
| ---------- | --- | --- | --- |
|
||
| Fullscreen | ✅ | ✅ | ✅ |
|
||
| Maximised | ✅ | ✅ | ✅ |
|
||
| Minimised | ✅ | | ✅ |
|
||
|
||
### 绑定
|
||
|
||
名称:Bind
|
||
|
||
类型: []interface{}
|
||
|
||
定义需要绑定到前端的方法的一部分结构实例。
|
||
|
||
### Windows
|
||
|
||
名称:Windows
|
||
|
||
类型:\*windows.Options
|
||
|
||
这定义了[Windows 特定的选项](#windows-特定选项)。
|
||
|
||
### Mac
|
||
|
||
名称:Mac
|
||
|
||
类型:\*mac.Options
|
||
|
||
这定义了[Mac 特定的选项](#mac-特定选项)。
|
||
|
||
## Windows 特定选项
|
||
|
||
### 网页透明
|
||
|
||
名称:WebviewIsTransparent
|
||
|
||
类型:bool
|
||
|
||
设置为 `true` 时将使 WebView 背景透明。这意味着如果你使用`rgba(0,0,0,0)`,主窗口将显示。通常与[窗口半透明](#窗口半透明)结合使用以制作冰霜效果的应用程序。
|
||
|
||
### 窗口半透明
|
||
|
||
名称:WindowIsTranslucent
|
||
|
||
类型:bool
|
||
|
||
将此设置为 `true` 将使窗口半透明。通常与[网页透明](#网页透明) 结合使用以制作冰霜效果的应用程序。
|
||
|
||
### 禁用窗口图标
|
||
|
||
名称:DisableWindowIcon
|
||
|
||
类型:bool
|
||
|
||
将此设置为 `true` 将删除标题栏左上角的图标。
|
||
|
||
### 禁用无边框窗口装饰
|
||
|
||
名称:DisableFramelessWindowDecorations
|
||
|
||
类型:bool
|
||
|
||
将此设置为`true`将移除[无边框](#无边框)模式下的窗口装饰。这意味着将不会有`Aero 阴影` 和 `圆角`显示在窗口上。请注意,`圆角`只在 Windows 11 上支持。
|
||
|
||
### Webview 用户数据路径
|
||
|
||
名称:WebviewUserDataPath
|
||
|
||
类型:string
|
||
|
||
这定义了 WebView2 存储用户数据的路径。如果为空将使用`%APPDATA%\[BinaryName.exe]`。
|
||
|
||
## Mac 特定选项
|
||
|
||
### 标题栏
|
||
|
||
名称:TitleBar
|
||
|
||
类型:[\*mac.TitleBar](#标题栏结构)
|
||
|
||
TitleBar 结构提供了配置标题栏外观的能力。
|
||
|
||
### 外观
|
||
|
||
名称:Appearance
|
||
|
||
类型:[AppearanceType](#外观类型)
|
||
|
||
Appearance 用于根据 Apple 的 [NSAppearance](https://developer.apple.com/documentation/appkit/nsappearancename?language=objc) 名称设置应用程序的样式。
|
||
|
||
### 网页透明
|
||
|
||
名称:WebviewIsTransparent
|
||
|
||
类型:bool
|
||
|
||
设置为 `true` 时将使 WebView 背景透明。这意味着如果你使用`rgba(0,0,0,0)`,主窗口将显示。通常与[窗口半透明](#窗口半透明)结合使用以制作冰霜效果的应用程序。
|
||
|
||
### 窗口半透明
|
||
|
||
名称:WindowIsTranslucent
|
||
|
||
类型:bool
|
||
|
||
将此设置为 `true` 将使窗口半透明。通常与[网页透明](#网页透明) 结合使用以制作冰霜效果的应用程序。
|
||
|
||
### 关于
|
||
|
||
名称:About
|
||
|
||
类型:[About](#关于结构)
|
||
|
||
此配置允许您为“AppMenu” role 创建的应用程序菜单中的“关于”菜单项设置标题、消息和图标。
|
||
|
||
#### 标题栏结构
|
||
|
||
可以使用 TitleBar 选项自定义应用程序的标题栏:
|
||
|
||
```go
|
||
type TitleBar struct {
|
||
TitlebarAppearsTransparent bool
|
||
HideTitle bool
|
||
HideTitleBar bool
|
||
FullSizeContent bool
|
||
UseToolbar bool
|
||
HideToolbarSeparator bool
|
||
}
|
||
```
|
||
|
||
| 名称 | 描述 |
|
||
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| TitlebarAppearsTransparent | 使标题栏透明。[Apple Docs](https://developer.apple.com/documentation/appkit/nswindow/1419167-titlebarappearstransparent?language=objc) |
|
||
| HideTitle | 隐藏窗口的标题。[Apple Docs](https://developer.apple.com/documentation/appkit/nswindowtitlevisibility?language=objc) |
|
||
| HideTitleBar | 从样式掩码中移除 [NSWindowStyleMaskTitled](https://developer.apple.com/documentation/appkit/nswindowstylemask/nswindowstylemasktitled/)。 |
|
||
| FullSizeContent | 使 webview 填满整个窗口。[Apple Docs](https://developer.apple.com/documentation/appkit/nswindowstylemask/nswindowstylemaskfullsizecontentview) |
|
||
| UseToolbar | 向窗口添加默认工具栏。 [Apple Docs](https://developer.apple.com/documentation/appkit/nstoolbar?language=objc) |
|
||
| HideToolbarSeparator | 删除工具栏下方的线条。 [Apple Docs](https://developer.apple.com/documentation/appkit/nstoolbar/1516954-showsbaselineseparator?language=objc) |
|
||
|
||
预设的标题栏设置可用:
|
||
|
||
| 设置 | 示例 |
|
||
| --------------------------- | --------------------------------------------- |
|
||
| `mac.TitleBarDefault()` |  |
|
||
| `mac.TitleBarHidden()` |  |
|
||
| `mac.TitleBarHiddenInset()` |  |
|
||
|
||
示例:
|
||
|
||
```go
|
||
Mac: &mac.Options{
|
||
TitleBar: mac.TitleBarHiddenInset(),
|
||
}
|
||
```
|
||
|
||
单击[此处](https://github.com/lukakerr/NSWindowStyles)获取有关自定义标题栏的一些灵感。
|
||
|
||
#### 外观类型
|
||
|
||
您可以指定应用程序的[外观](https://developer.apple.com/documentation/appkit/nsappearance?language=objc)。
|
||
|
||
| 值 | 描述 |
|
||
| ----------------------------------------------------- | ------------------------------ |
|
||
| DefaultAppearance | 使用默认系统值 |
|
||
| NSAppearanceNameAqua | 标准日间系统外观 |
|
||
| NSAppearanceNameDarkAqua | 标准黑夜系统外观 |
|
||
| NSAppearanceNameVibrantLight | 轻盈灵动的外观 |
|
||
| NSAppearanceNameAccessibilityHighContrastAqua | 标准白天系统外观的高对比度版本 |
|
||
| NSAppearanceNameAccessibilityHighContrastDarkAqua | 标准黑夜系统外观的高对比度版本 |
|
||
| NSAppearanceNameAccessibilityHighContrastVibrantLight | 轻盈灵动外观的高对比度版本 |
|
||
| NSAppearanceNameAccessibilityHighContrastVibrantDark | 深色活力外观的高对比度版本 |
|
||
|
||
示例:
|
||
|
||
```go
|
||
Mac: &mac.Options{
|
||
Appearance: mac.NSAppearanceNameDarkAqua,
|
||
}
|
||
```
|
||
|
||
#### 关于结构
|
||
|
||
```go
|
||
type AboutInfo struct {
|
||
Title string
|
||
Message string
|
||
Icon []byte
|
||
}
|
||
```
|
||
|
||
如果提供了这些设置,“关于”菜单项将出现在应用程序菜单中(使用`AppMenu` role 时)。建议这样配置:
|
||
|
||
```go
|
||
//go:embed build/appicon.png
|
||
var icon []byte
|
||
|
||
func main() {
|
||
err := wails.Run(&options.App{
|
||
...
|
||
Mac: &mac.Options{
|
||
About: &mac.AboutInfo{
|
||
Title: "My Application",
|
||
Message: "© 2021 Me",
|
||
Icon: icon,
|
||
},
|
||
},
|
||
})
|
||
```
|
||
|
||
“关于”菜单项将出现在应用程序菜单中:
|
||
|
||
<div class="text--center">
|
||
<img
|
||
src="/img/reference/about-menu.png"
|
||
style={{
|
||
"box-shadow":
|
||
"rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
|
||
}}
|
||
/>
|
||
</div>
|
||
<br />
|
||
|
||
单击后,将打开一个关于消息框:
|
||
|
||
<div class="text--center">
|
||
<img
|
||
src="/img/reference/about-dialog.png"
|
||
width="40%"
|
||
style={{
|
||
"box-shadow":
|
||
"rgb(255 255 255 / 20%) 0px 4px 8px 0px, rgb(104 104 104) 0px 6px 20px 0px",
|
||
}}
|
||
/>
|
||
</div>
|
||
<br />
|