5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 13:02:04 +08:00
wails/website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.0.0-beta.34/reference/options.mdx
Misitebao 78c6705cc3
feat(website): improve website content (#1309)
Update Chinese translation
2022-04-04 20:05:54 +10:00

526 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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()` | ![](/img/reference/titlebar-default.png) |
| `mac.TitleBarHidden()` | ![](/img/reference/titlebar-hidden.png) |
| `mac.TitleBarHiddenInset()` | ![](/img/reference/titlebar-hidden-inset.png) |
示例:
```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 />