【问题标题】:Keeping track of window size in electron跟踪电子中的窗口大小
【发布时间】:2019-02-17 02:40:58
【问题描述】:

我今天才开始玩 Electron。我需要能够获得可用的窗口大小,并在调整窗口大小时对其进行更新。

这似乎不像在传统的 JS 应用程序中那么简单。跟踪窗口大小的推荐方法是什么?

目前,我有我的主进程和一个渲染器,没有计划一次打开超过 1 个渲染器/窗口。

我尝试使用以下内容,但似乎完全错误,所以我一定误解了文档。

const {BrowserWindow} = require('electron').remote
BrowserWindow.getSize()

编辑:

通过观察应用程序的主体来跟踪高度是否合理?我可以将其设置为 100% 的宽度/高度并观看它,但这似乎有点 hack。

谢谢 汤姆

【问题讨论】:

  • “可用窗口大小”是指物理显示器的大小吗?否则,getSize() 应该可以工作,但您必须在 BrowserWindow instance 上调用它,而不是作为静态函数
  • 谢谢,有道理。我应该更清楚一点,我实际上想知道当前应用程序窗口的大小(我猜这将是渲染器)?我需要做的是使用当前可用高度的大小来确定其他东西的大小。不幸的是,它需要以像素而不是百分比来完成。
  • 您当前的应用程序窗口可能也是BrowserWindow。如果您没有它的变量,您可以通过BrowserWindow.getFocusedWindow() 检索它或从BrowserWindow.getAllWindows() 静态函数中选择,然后在实例上使用getSize。此外,您可能还想听听它的'resize' 事件。看看api docs

标签: electron


【解决方案1】:

你可以试试

const electron = require('electron')
const remote = electron.remote

remote.getCurrentWindow().webContents.getOwnerBrowserWindow().getBounds()

Bounds 会有当前窗口的坐标和大小,

{ 
  height: 1040,
  width : 837,
  x : 276,
  y : 78 
}

【讨论】:

  • height & width 是像素吗?我想要以像素为单位的屏幕尺寸,有什么解决方法吗?
【解决方案2】:

这适用于 v4.0.4:

renderer.js 中:

import { remote } from "electron";

console.log('size:', remote.getCurrentWindow().getSize());
// size: [1000, 700]

console.log('bounds:', remote.getCurrentWindow().getBounds());
// bounds: {height: 700, width: 1000, x: 226, y: 97}

main.js 中:

import { BrowserWindow } from "electron";

let mainWindow: BrowserWindow

// ...after mainWindow is created
console.log('size:', mainWindow.getSize());
console.log('bounds:', mainWindow.getBounds());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2012-10-04
    • 2021-06-23
    相关资源
    最近更新 更多