Главное окно автоматического размера

Я создаю приложение, используя 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")
    }
}()
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
2 015
2

Ответы 2

попробуйте сделать что-то подобное

  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
});

Надеюсь, это сработает.

Прошу прощения, но я не думаю, что это сработает, поскольку я создаю свое окно в Go, а не в Javascript ... Я обновлю свой вопрос.

Felipe 13.12.2018 20:46
const size = screen.getPrimaryDisplay().workAreaSize; Приведенный выше код фактически заполнит весь экран!
Ken Lin 01.08.2019 05:14

Попробуйте установить 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, так и без него.

Felipe 14.12.2018 11:07

Другие вопросы по теме