electron 对话框在调用showMessageBox(win, ...)时不会居中到窗口,

lsmepo6l  于 4个月前  发布在  Electron
关注(0)|答案(6)|浏览(56)

预检清单

  • 我已阅读了此项目的 Contributing Guidelines
  • 我同意遵循此项目遵循的 Code of Conduct
  • 我在问题跟踪器中搜索了一个与我想提交的问题匹配的问题,但没有成功。

问题详情

  • Electron 版本: 8.2.0
  • 操作系统: Windows 10 (版本 1709)
  • 最后已知的工作 Electron 版本: 不确定

预期行为

我希望通过 dialog.showMessageBox(...) 并传入一个窗口作为第一个参数来创建一个居中的对话框。

实际行为

对话框是居中的屏幕。

重现方法

运行下面的应用程序并观察到对话框没有居中于窗口。

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

async function createWindow() {
  const mainWindow = new BrowserWindow({ x: 1000, y: 1000 });
  await mainWindow.loadURL("https://google.com");

  dialog.showMessageBox(mainWindow, {
    message: "message"
  });
}

app.on('ready', createWindow)

目前还不清楚这是否是一个错误还是一个功能请求。
一个类似的问题 here 建议在使用 showMessageBox(win, ...) 时居中窗口是预期的行为:
如果你想在窗口中居中对话框,你应该使用 showMessageBox 并将其传递给它。

vd8tlhqk

vd8tlhqk1#

@zcbenz 我使用的是Electron v12,即使传递了父窗口,对话框仍然出现在屏幕中间而不是浏览器窗口的中心。平台是Windows。这仍然是一个问题吗?

wfauudbj

wfauudbj2#

@m4heshd 我实际上更希望它位于窗口的中心,而不是屏幕上,而目前(在Electron 11上)似乎它并不位于窗口的中心。

tzcvj98z

tzcvj98z3#

@pushkin - 这很奇怪,因为我之前在v11上也是这样。之前误读了。我认为我们想实现与我在上面评论中提到的相同的事情。我也希望它能在窗口中居中。希望有这个选项。
似乎没有出现在窗口的中心
我有一个多显示器设置,可以清楚地看到对话框出现在屏幕中间的任何窗口内。所以是的。这绝对是有意为之的。

rqenqsqc

rqenqsqc4#

这似乎仍然是Electron 12的一个问题。将浏览器窗口作为参数传递给dialog.showMessageBox或dialog.showMessageBoxSync仍然不能将消息框放在浏览器窗口的中心,它总是只出现在屏幕的中心。
例如,如果你拖动程序的浏览器窗口到左侧或者向上移动,然后在程序中点击以显示一个消息框,消息框会出现在显示器屏幕的中心,而不是在程序窗口的中心。

zlwx9yxi

zlwx9yxi5#

@balwantgill 它不被归类为"问题",因为它从未在一开始就被实施。但我真的希望这能作为Electron的增强功能,因为它现在的表现方式真的很奇怪。尤其是在大一点(分辨率更高)的屏幕上,用户可能会将应用程序捕捉到1/3或其他较小的屏幕区域。

7jmck4yq

7jmck4yq6#

我确认消息框在Windows上不是居中的,要使其居中,我们需要添加一些手动定位代码:
https://stackoverflow.com/questions/21961657/center-messagebox-window-to-my-own-window
我将此标记为增强功能,因为在Electron之前从未实现过。

相关问题