gpt4 book ai didi

desktop-application - 桌面 Web 应用程序中的丰富 HTML 托盘菜单

转载 作者:行者123 更新时间:2023-12-04 22:19:18 25 4
gpt4 key购买 nike

我想创建一个带有自定义按钮、 slider 的托盘菜单应用程序,也许还有一些不错的过渡效果,像这样的页眉和页脚:

menu

该应用程序需要在 Linux、Windows 和 Mac 上运行。
我猜想它应该可以使用桌面网络应用程序 + 一些 HTML,但我找不到任何框架的任何有用示例。每个示例都使用了操作系统的菜单,但它没有我需要的元素。

谁能指导我如何在任何网络应用程序框架中或多或少地实现这一点?

最佳答案

这可以很容易地在 Electron 中完成,实际上我自己在下图中创建了一些托盘应用程序:
Tray app Trap app 2
您需要的基本文件是:

  • index.html
  • main.js
  • package.json

  • index.html你会按照你想要的方式设计你的应用程序。在上面的示例中,我只使用了几个输入框并使用 CSS 设置它们的样式。 main.js文件是您放置主要代码以驱动应用程序的位置。
    package.json文件是您放置应用程序、开发依赖项等详细信息的位置。
    您应该关注的主要文件是 main.js文件。以下是 main.js 的示例上述应用程序的文件。我添加了评论以帮助您理解:
    // Sets variables (const)
    const {app, BrowserWindow, ipcMain, Tray} = require('electron')
    const path = require('path')

    const assetsDirectory = path.join(__dirname, 'img')

    let tray = undefined
    let window = undefined

    // Don't show the app in the doc
    app.dock.hide()

    // Creates tray & window
    app.on('ready', () => {
    createTray()
    createWindow()
    })

    // Quit the app when the window is closed
    app.on('window-all-closed', () => {
    app.quit()
    })

    // Creates tray image & toggles window on click
    const createTray = () => {
    tray = new Tray(path.join(assetsDirectory, 'icon.png'))
    tray.on('click', function (event) {
    toggleWindow()
    })
    }

    const getWindowPosition = () => {
    const windowBounds = window.getBounds()
    const trayBounds = tray.getBounds()

    // Center window horizontally below the tray icon
    const x = Math.round(trayBounds.x + (trayBounds.width / 2) - (windowBounds.width / 2))

    // Position window 4 pixels vertically below the tray icon
    const y = Math.round(trayBounds.y + trayBounds.height + 3)

    return {x: x, y: y}
    }

    // Creates window & specifies its values
    const createWindow = () => {
    window = new BrowserWindow({
    width: 250,
    height: 310,
    show: false,
    frame: false,
    fullscreenable: false,
    resizable: false,
    transparent: true,
    'node-integration': false
    })
    // This is where the index.html file is loaded into the window
    window.loadURL('file://' + __dirname + '/index.html');

    // Hide the window when it loses focus
    window.on('blur', () => {
    if (!window.webContents.isDevToolsOpened()) {
    window.hide()
    }
    })
    }

    const toggleWindow = () => {
    if (window.isVisible()) {
    window.hide()
    } else {
    showWindow()
    }
    }

    const showWindow = () => {
    const position = getWindowPosition()
    window.setPosition(position.x, position.y, false)
    window.show()
    window.focus()
    }

    ipcMain.on('show-window', () => {
    showWindow()
    })
    以下是 package.json 的示例文件:
    {
    "name": "NAMEOFAPP",
    "description": "DESCRIPTION OF APP",
    "version": "0.1.0",
    "main": "main.js",
    "license": "MIT",
    "author": "NAME OF AUTHOR",
    "scripts": {
    "start": "electron ."
    },
    "devDependencies": {
    "electron-packager": "^8.2.0"
    }
    }
    所以,如果你创建一个简单的 index.html文件说“Hello World”,将上述代码放入 main.js文件和 package.json文件并运行它将从托盘运行的应用程序。
    如果你不知道如何使用 Electron,你需要先弄清楚 ( Electron docs)。然后将清楚放置哪个文件以及如何运行应用程序。

    关于desktop-application - 桌面 Web 应用程序中的丰富 HTML 托盘菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485102/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com