跳转至

进度条

概述

进度条使窗口能够向用户提供进度信息,而无需切换到该窗口本身。

在 Windows 上,你可以使用任务栏按钮来显示进度条。

Windows 进度条

在 macOS 上,进度条将作为 Dock 图标的一部分显示。

macOS 进度条

注意:在 Windows 上,每个窗口都可以拥有自己的进度条,而在 macOS 上 应用程序只能有一个进度条。在 Linux 上,不支持进度条。


这三种情况都由同一个 API 覆盖——BrowserWindow 实例上可用的 setProgressBar() 方法。要指示你的进度,请调用此方法并传入 0 到 1 之间的数字。例如,如果你有一个长时间运行的任务,当前已完成 63%, 你可以调用 setProgressBar(0.63)。

将参数设置为负值(例如 -1)会移除进度条。将其设置为大于 1 的值 会在 Windows 上指示一个不确定进度条,或在其他操作系统上限制为 100%。不确定进度条 保持活动状态,但不显示实际百分比,用于你不知道操作需要多长时间才能完成的情况。

有关更多选项和模式,请参阅 API 文档。

示例

在这个示例中,我们为主窗口添加一个进度条,并使用 Node.js 定时器随时间递增。

```fiddle docs/fiddles/features/progress-bar const { app, BrowserWindow } = require('electron/main')

let progressInterval

function createWindow () { const win = new BrowserWindow({ width: 800, height: 600 })

win.loadFile('index.html')

const INCREMENT = 0.03 const INTERVAL_DELAY = 100 // ms

let c = 0 progressInterval = setInterval(() => { // update progress bar to next value // values between 0 and 1 will show progress, >1 will show indeterminate or stick at 100% win.setProgressBar(c)

// increment or reset progress bar
if (c < 2) {
  c += INCREMENT
} else {
  c = (-INCREMENT * 5) // reset to a bit less than 0 to show reset state
}

}, INTERVAL_DELAY) }

app.whenReady().then(createWindow)

// before the app is terminated, clear both timers app.on('before-quit', () => { clearInterval(progressInterval) })

app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } })

app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) ```

启动 Electron 应用程序后,Dock(macOS)或任务栏(Windows) 应显示一个进度条,它从零开始并推进到 100% 完成。 然后它应短暂显示不确定状态(Windows)或固定在 100%(其他操作系统), 然后循环。

macOS Dock 进度条

对于 macOS,当使用 Mission Control 时, 你的应用程序也会显示进度条:

Mission Control 进度条

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron