Tauri应用如何动态调整窗口尺寸?

振艳 阅读 157

在用Tauri开发应用时,想根据用户点击按钮动态调整窗口大小,但按照文档调用window.resizeTo()没反应,有没有其他正确方法?

尝试在前端用JavaScript调用:


function resizeWindow() {
  window.resizeTo(800, 600);
}

但点击按钮后窗口尺寸没变化,控制台也没有报错。查了tauri.conf.js配置,窗口初始尺寸设置正常,但动态修改没效果,这是为什么?

我来解答 赞 14 收藏
二维码
手机扫码查看
2 条解答
司马美蓝
Tauri里前端的 window.resizeTo() 被浏览器安全策略限制了,根本没权限调,得用 Tauri 的 API。

先在 tauri.conf.json 里加 permissions 配置:

"window": ["startDrag", "setSize", "setSize", "setMinSize", "setMaxSize", "setFullscreen", "setFocus", "close", "hide", "show", "maximize", "unmaximize", "minimize", "unminimize"]

然后在前端用 JS 调 Tauri 的命令:

import { invoke } from '@tauri-apps/api/tauri';

async function resizeWindow() {
await invoke('resize_window', { width: 800, height: 600 });
}


Rust 侧写个命令:

#[command]
fn resize_window(window: Window, width: u32, height: u32) {
let _ = window.set_size(Size::new(width, height));
}


差不多就行,记得装最新版 tauri,老版本路径可能不一样。
点赞 5
2026-02-23 18:05
程序猿广云
这个问题有点坑啊,其实 window.resizeTo() 是浏览器的方法,在 Tauri 里是没法直接用的。Tauri 的窗口操作得通过它的 API 来搞。

你需要用到 Tauri 提供的 @tauri-apps/api/window 模块。简单来说,就是得在前端调用 Tauri 的窗口管理方法才行。

给你个示例代码,直接上手就能用:

async function resizeWindow() {
const { current } = await import('@tauri-apps/api/window');
await current.setSize({ width: 800, height: 600 });
}

// 绑定到按钮点击事件
document.getElementById('resize-btn').addEventListener('click', resizeWindow);


注意几点:
1. 确保你装了最新的 Tauri API 包。
2. 这里的 setSize 方法是异步的,记得用 await
3. 前端这块得引入 Tauri 的 API,按上面的方式动态导入就行。

这样写就妥了,窗口大小能正常调整。如果还是有问题,检查下 Tauri 的配置文件里有没有限制窗口尺寸的选项,比如 minWidthminHeight 之类的,可能会干扰设置。
点赞 13
2026-01-29 06:10