Я создаю приложение, используя Go-Astilectron (фреймворк Electron для Go).
В моем приложении есть прозрачное окно без рамки, размер которого следует изменять в зависимости от его содержимого. Насколько я могу судить, я обязан установить свойства width и height окна в Electron, иначе по умолчанию будет 800x600.
Я хотел бы знать, есть ли у Electron способ автоматически изменять размер окна в зависимости от его содержимого.
Я мог бы использовать подход «Один размер подходит всем», но поскольку мое окно безрамное и прозрачное, некоторые его части в конечном итоге будут поверх других элементов, а поскольку кликов нет, пользователь запутается, думая, что он нажимает на какое-то другое приложение, хотя на самом деле он нажимает на мое приложение.
Вот мой код для создания окна:
var w *astilectron.Window
log.Debug("Starting astilectron...")
window := []*bootstrap.Window{{
Homepage: "http://localhost:3000",
Adapter: func(i *astilectron.Window) {
w = i
},
Options: &astilectron.WindowOptions{
MinHeight: astilectron.PtrInt(50),
MinWidth: astilectron.PtrInt(50),
AlwaysOnTop: astilectron.PtrBool(true),
Transparent: astilectron.PtrBool(true),
Closable: astilectron.PtrBool(false),
Minimizable: astilectron.PtrBool(false),
Frame: astilectron.PtrBool(false),
Movable: astilectron.PtrBool(true),
SkipTaskbar: astilectron.PtrBool(false),
Resizable: astilectron.PtrBool(false),
},
}}
go func() {
err := bootstrap.Run(bootstrap.Options{
Windows: window,
Debug: true,
})
if err != nil {
log.WithError(err).Fatal("Error with Astilectron")
}
}()

попробуйте сделать что-то подобное
const { screen } = require('electron');
const size = screen.getPrimaryDisplay().workAreaSize;
// Create the browser window.
mainWindow = new BrowserWindow({
x: 0,
y: 0,
width: size.width,
height: size.height
});
Надеюсь, это сработает.
const size = screen.getPrimaryDisplay().workAreaSize; Приведенный выше код фактически заполнит весь экран!
Попробуйте установить UseContentSize: astilectron.PtrBool(true).
UseContentSize Изменяет размер окна в зависимости от размера страницы. Вот что написано в документации:
The width and height would be used as web page's size, which means the actual window's size will include window frame's size and be slightly larger. Default is false.
Привет, я попытался установить этот флаг в своем окне, но он все равно не работает. размер окна по умолчанию 800x600. Примечание: я пробовал это как с набором Width, так и без него.
Прошу прощения, но я не думаю, что это сработает, поскольку я создаю свое окно в Go, а не в Javascript ... Я обновлю свой вопрос.