繁体   English   中英

如何在 Electron 应用程序中隐藏或显示菜单标签

[英]How to hide or show menu labels in Electron app

我有 Electron 应用程序,我试图根据用户输入隐藏或显示 label。 label客场展示。 我正在尝试隐藏或显示教程

在此处输入图像描述

{
      id: "tut",
      label: "Tutorials",
      submenu: [
        {
          id: "subTut",
          label: "Tutorials",
          click: async () => {
            const { shell } = require("electron");
            await shell.openExternal("https://example.app/tutorials");
          },
        },
      ],
    },

在我的 main.js 进程中,我调用菜单

当我打电话时:

Menu.getApplicationMenu().getMenuItemById("tut").visible = false;

它没有隐藏任何东西,但是我称之为

Menu.getApplicationMenu().getMenuItemById("subTut").visible = false;

它将隐藏子菜单项

在 Mac OS 中,您不能隐藏顶级菜单项,只能隐藏子菜单项:

注意事项:启用和可见性属性不适用于 macOS 托盘中的顶级菜单项。

来源:文档

这是任何遇到此问题的解决方案,这可以通过使用 function 来完成

Menu.setApplicationMenu()

只需将 object 传递给 function 即可调用菜单来处理项目是否可见

const MenuItems = (options) => {
  // MENU
  const template = [
{
      label: "Window",
      submenu: [
        {
          visible: options.option, 
          label: "Support",
          click: async () => {
            await shell.openExternal("https://example.com");
          },
        },
       ]
]

const menu = Menu.buildFromTemplate(template);
  Menu.setApplicationMenu(menu);
};

当您为您的菜单运行 function 时,只需在 function 中传递 object 即可显示内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM