【问题标题】:Change BrowserWindow position dynamically in electron app在电子应用程序中动态更改 BrowserWindow 位置
【发布时间】:2017-11-16 20:40:12
【问题描述】:

我正在 window.js 中创建一个菜单,当我们点击它时,当前浏览器窗口的位置将会改变。我有我的 app.js 文件,我在其中创建了 browserWindow 并设置了 x,y 。现在如何更改当前 browserWindow 的 x,y 值?

我在 app.js 中的 BrowserWindow

 window = new BrowserWindow({
      width: 265,
      height: screenheight,
      x: screenXPosition,
      y: 0,
      icon: "icon.ico",
      skipTaskbar: true,
      alwaysOnTop: false,
      show: false,
      frame: false,
      autoHideMenuBar: true,
      transparent: true,
      // resizable: false
    })

我有一个 Window.js 文件,其中我的菜单是。是否需要将当前窗口实例传递给 window.js?如果是,我应该如何将当前的 browserWindow 实例传递给 window.js 到 app.js?我们如何改变 x,y 值? 可能吗 ? 我的 window.js 菜单

//Menu
const menu = new Menu()
// Build menu one item at a time, unlike
menu.append(new MenuItem({
    label: 'Settings'

}))
menu.append(new MenuItem({
    type: 'separator'
}))
menu.append(new MenuItem({
    label: 'position',
    submenu: [{
            label: 'right',
            role: '25%',
            type: 'checkbox',
            checked: true,
            click: function () {
                console.log('25%');
            }
        },
        {
            type: 'separator'
        },
        {
            label: 'left',
            role: '50%',
            click: function () {
                console.log('50%');
            }
        },
        {
            type: 'separator'
        },
        {
            label: 'center',
            role: '50%',
            click: function () {
                console.log('50%');
            }
        }
    ]
}))
window.addEventListener('contextmenu', (e) => {
    e.preventDefault()
    menu.popup(remote.getCurrentWindow())
}, false)

【问题讨论】:

    标签: node.js electron


    【解决方案1】:

    在 menuItem 点击有一个当前browserWindow 的参数。

    要设置 x 和 y 位置,您可以使用window.setPosition(x, y)

    所以你的 menuItem 代码应该是这样的:

    {
        label:   'right',
        role:    '25%',
        type:    'checkbox',
        checked: true,
        click:   function (item, focusedWindow) {
            console.log('25%');
            focusedWindow.setPosition(10, 10);
        }
    }
    

    window.setPosition

    menuItem arguments

    【讨论】:

    • 如果我们想要 window.js 中的focusedWindow 怎么办?即不在菜单中,而是在 window.js 的主文件中
    • 我已经检查了 remote.BrowserWindow.getFocusedWindow() 但对我不起作用它给出了错误未捕获的错误:无法调用远程函数“setPosition”。检查函数签名是否正确。潜在错误:索引 0 处的错误处理参数,未定义的转换失败
    • 如何将minWidth 更改为remote??
    • @oldboy 对不起,我没有真正关注。你能解释一下吗?或者创建一个新问题?
    • nm 我想通了。 setMinimumSize()
    猜你喜欢
    • 2017-01-18
    • 2014-08-15
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多