gpt4 book ai didi

position - Electron 中的新窗口定位

转载 作者:行者123 更新时间:2023-12-03 23:49:22 25 4
gpt4 key购买 nike

我需要知道如何打开由当前窗口位置稍微偏移的新窗口(第一个窗口将在中心打开)

我的代码如下:

// index.js

const {app,BrowserWindow,Menu,MenuItem,dialog}=require('electron');

function window_open(path){
win = new BrowserWindow({show: false})
win.loadURL(path);
win.once('ready-to-show', () => {win.show()})
}


let win

app.on('ready',event=>{
'use strict';
window_open(`file://${__dirname}/index.html`)
});

这将在中心打开初始窗口。我也在新窗口命令(cmd+n)中传递了这个函数
{
label: 'File',
submenu: [
{label: 'New Window', accelerator: 'CmdOrCtrl+N', click: () => (
window_open(`file://${__dirname}/index.html`))
},

代码工作正常,除了每个窗口都在中心位置相同。我希望每个新窗口都有一点偏移。

实现这一目标的最佳方法是什么?

最佳答案

我了解到我需要这两件事:

  • BrowserWindow.getFocusedWindow()
  • win.getPosition()

  • 结合@pergy 的响应,我得到以下代码,如果有焦点窗口,它会找到焦点窗口并从其位置偏移一个新窗口,否则在中心创建一个新窗口:
    let win = null;
    function window_open(path) {
    const opts = { show: false };
    if (BrowserWindow.getFocusedWindow()) {
    current_win = BrowserWindow.getFocusedWindow();
    const pos = current_win.getPosition();
    Object.assign(opts, {
    x: pos[0] + 22,
    y: pos[1] + 22,
    });
    };
    win = new BrowserWindow(opts);
    win.loadURL(path);
    win.once('ready-to-show', () => { win.show() });
    };

    app.once('ready', event => {
    window_open(`file://${__dirname}/index.html`);
    });
    这满足了我在原始问题中的要求,所以我决定发布这个。但是,我确实觉得生成新窗口的速度很慢,因此我不会将此标记为答案,以查看是否有更快的方法。

    更新:
    我发现等待 'ready-to-show'是什么让它变慢,因为它等待就绪状态。我接受了这个作为答案,因为我觉得速度问题取决于内容而不是浏览器。随意添加评论,因为我仍然敞开耳朵。

    关于position - Electron 中的新窗口定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46949194/

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