16. Tray

原文:https://github.com/electron/electron/blob/master/docs/api/tray.md
譯者:Lin

添加圖標(biāo)和右鍵菜單到系統(tǒng)的通知區(qū)域

進(jìn)程:主進(jìn)程

Tray是一個EventEmitter。

const {app, Menu, Tray} = require('electron')

let tray = null
app.on('ready', () => {
tray = new Tray('/path/to/my/icon')
const contextMenu = Menu.buildFromTemplate([
    {label: 'Item1', type: 'radio'},
    {label: 'Item2', type: 'radio'},
    {label: 'Item3', type: 'radio', checked: true},
    {label: 'Item4', type: 'radio'}
])
tray.setToolTip('This is my application.')
tray.setContextMenu(contextMenu)
})

平臺的局限性:

  • Linux中如果支持應(yīng)用指示器那么應(yīng)用指示器將被使用,否則將使用GtkStatusIcon代替。
  • Linux發(fā)行版中支持應(yīng)用指示器,你需要安裝libappindicator1來使tray圖標(biāo)工作。
  • 當(dāng)有右鍵菜單時才會展示應(yīng)用指示器。
  • 當(dāng)Linux中的應(yīng)用指示器被使用,click事件將被忽略。
  • Linux中為了使個別的MenuItems的改變生效,你需要再次調(diào)用setContextMenu。例如:
const {app, Menu, Tray} = require('electron')

let appIcon = null
app.on('ready', () => {
   appIcon = new Tray('/path/to/my/icon')
   const contextMenu = Menu.buildFromTemplate([
       {label: 'Item1', type: 'radio'},
       {label: 'Item2', type: 'radio'}
   ])

   // Make a change to the context menu
   contextMenu.items[1].checked = false

   // Call this again for Linux because we modified the context menu
   appIcon.setContextMenu(contextMenu)
})
  • Windows中建議使用ICO格式的圖標(biāo)來獲得最好的視覺效果。

如果你想在所有平臺上保持完全相同的行為,你需要不依賴點擊事件并且將右鍵菜單依附在托盤圖標(biāo)上。

new Tray(image)

通過image創(chuàng)建一個托盤圖標(biāo)。

實例的事件

Tray模塊分發(fā)以下事件:

事件: 'click'

  • event Event類型
    • altKey Boolean類型
    • shiftKey Boolean類型
    • ctrlKey Boolean類型
    • metaKey Boolean類型
  • bounds Rectangle類型 - 托盤圖標(biāo)的邊界。

當(dāng)托盤圖片被點擊的時候被分發(fā)。

事件: 'right-click' MacOS Windows

  • event Event
    • altKey Boolean
    • shiftKey Boolean
    • ctrlKey Boolean
    • metaKey Boolean
  • bounds Rectangle類型 - 托盤圖標(biāo)的邊界。

當(dāng)托盤圖片被右鍵點擊的時候被分發(fā)。

事件: 'double-click' MacOS Windows

  • event Event
    • altKey Boolean
    • shiftKey Boolean
    • ctrlKey Boolean
    • metaKey Boolean
  • bounds Rectangle類型 - 托盤圖標(biāo)的邊界。

當(dāng)托盤圖片被雙擊的時候被分發(fā)。

事件: 'balloon-show' Windows

當(dāng)托盤氣球展示的時候被分發(fā)。

事件: 'balloon-click' Windows

當(dāng)托盤氣球被點擊的時候被分發(fā)。

事件: 'balloon-closed' Windows

當(dāng)托盤氣球因為超時關(guān)閉或者用戶手動點擊關(guān)閉時被分發(fā)。

事件: 'drop' MacOS

任何被拖動的項目被拖動到托盤圖標(biāo)上的時候被分發(fā)。

事件: 'drop-files' MacOS

  • event Event類型
  • files String[]類型 - 被拖動的文件的路徑。

被拖動的文件拖動到托盤圖標(biāo)里面的時候被分發(fā)。

事件: 'drop-text' MacOS

  • event Event類型
  • text String類型 - 被拖動的文本字符串。

被拖動的文本拖動到托盤圖標(biāo)里面的時候被分發(fā)。

事件: 'drag-enter' MacOS

當(dāng)一個拖動操作進(jìn)入到托盤圖標(biāo)的時候被分發(fā)。

事件: 'drag-leave' MacOS

當(dāng)一個拖動操作離開托盤圖標(biāo)的時候被分發(fā)。

事件: 'drag-end' MacOS

當(dāng)拖動操作在托盤圖標(biāo)上釋放或在其他的位置釋放時被分發(fā)。

實例的方法

Tray類有以下方法:

tray.destroy()

立刻銷毀托盤圖標(biāo)。

tray.setImage(image)

設(shè)置托盤圖標(biāo)。

tray.setPressedImage(image) MacOS

設(shè)置MacOS下按下托盤圖標(biāo)是的托盤圖標(biāo)。

tray.setToolTip(toolTip)

  • toolTip String類型

設(shè)置托盤圖標(biāo)的懸停文本。

tray.setTitle(title) MacOS

  • title String類型

設(shè)置顯示在狀態(tài)欄中托盤圖標(biāo)旁邊的文字。

tray.setHighlightMode(mode) MacOS

  • mode String類型 - 高亮模式有以下值類型:
    • selection - 托盤圖標(biāo)被點擊的時候和右鍵菜單打開的時候高亮。這個是默認(rèn)值。
    • always - 托盤圖標(biāo)維持高亮狀體。
    • never - 托盤圖標(biāo)沒有高亮狀態(tài)。

設(shè)置什么時候托盤的圖標(biāo)背景變成高亮狀態(tài)(藍(lán)色)。

注意:當(dāng)窗口是否可見狀態(tài)改變的時候,你可以使用BrowserWindowhighlightMode'never''always'模式指尖切換。

const {BrowserWindow, Tray} = require('electron')

const win = new BrowserWindow({width: 800, height: 600})
const tray = new Tray('/path/to/my/icon')

tray.on('click', () => {
    win.isVisible() ? win.hide() : win.show()
})
win.on('show', () => {
    tray.setHighlightMode('always')
})
win.on('hide', () => {
    tray.setHighlightMode('never')
})

tray.displayBalloon(options) Windows

  • options Object類型
    • icon (NativeImage | String)類型(可選參數(shù))
    • title String類型(可選參數(shù))
    • content String類型(可選參數(shù))

展示一個托盤氣球。

tray.popUpContextMenu([menu, position]) MacOS Windows

  • menu Menu類型(可選參數(shù))
  • position Object類型(可選參數(shù))- 彈出的位置。
    • x Integer
    • y Integer

彈出一個托盤圖標(biāo)的右鍵菜單。當(dāng)menu參數(shù)被設(shè)置,menu將被展示代替托盤圖標(biāo)的右鍵菜單。

position只在Windows中有效,并且默認(rèn)值是(0, 0)。

tray.setContextMenu(menu)

  • menu Menu類型

給這個托盤圖標(biāo)設(shè)置右鍵菜單。

tray.getBounds() MacOS Windows

返回值為Rectangle類型

作為Object的托盤圖標(biāo)的bounds。

tray.isDestroyed()

返回值為Boolean類型 - 托盤圖標(biāo)是否被銷毀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文:https://github.com/electron/electron/blob/master/docs/...
    Shmily落墨閱讀 19,491評論 1 5
  • 原文:https://github.com/electron/electron/blob/master/docs/...
    Shmily落墨閱讀 2,917評論 0 1
  • 原文:https://github.com/electron/electron/blob/master/docs/...
    Shmily落墨閱讀 6,400評論 0 1
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,317評論 0 17
  • Objective關(guān)于今天的課程/工作, 你記得什么? 心理課: 多年以前有四個學(xué)者隨著一個駝隊穿越卡瓦爾沙漠,晚...
    明睿希燦閱讀 500評論 0 0

友情鏈接更多精彩內(nèi)容