You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让pywebview默认以带窗口控件的最大化状态启动本地HTML页面?

如何让pywebview默认以带窗口控件的最大化状态启动?

我尝试用pywebview默认以最大化窗口显示本地HTML页面,但所有尝试的方法均无效。现有代码如下:

from flask import Flask, send_from_directory
import threading
import webview
import os
 
...

webview.create_window('My React App', url='http://127.0.0.1:5000')
webview.start()

已尝试的无效方法

  • 设置fullscreen=True:仅进入全屏状态,窗口框架消失,无法保留关闭、最小化等按钮
    代码:
    webview.create_window('My React App', url='http://127.0.0.1:5000', fullscreen=True)
    
  • 获取屏幕尺寸并设置宽高:窗口虽接近最大化,但左右两侧存在10像素间隙
    代码:
    screen_width = user32.GetSystemMetrics(0)
    screen_height = user32.GetSystemMetrics(1)
    
    root.geometry(f"{screen_width}x{screen_height}")
    
    webview.create_window("My React App",url="http://127.0.0.1:5000",width=screen_width, height=screen_height)
    

可行解决方案

跨平台通用方法

pywebview的窗口对象自带maximize()方法,可在窗口创建完成后调用,既能保留窗口框架和控件,又能实现标准最大化状态。

修改后的完整示例代码:

from flask import Flask, send_from_directory
import threading
import webview
import os

# 初始化Flask应用(根据你的实际需求编写)
app = Flask(__name__)

@app.route('/')
def serve_index():
    return send_from_directory('your_html_dir', 'index.html')

def on_window_ready(window):
    # 窗口创建完成后执行最大化
    window.maximize()

if __name__ == '__main__':
    # 启动Flask服务(后台线程方式,避免阻塞)
    flask_thread = threading.Thread(target=lambda: app.run(debug=False), daemon=True)
    flask_thread.start()

    # 创建窗口
    window = webview.create_window('My React App', url='http://127.0.0.1:5000')
    # 启动webview并传入窗口就绪回调
    webview.start(on_window_ready, window)

Windows平台专用方法(兼容旧版pywebview)

如果使用的pywebview版本不支持maximize()方法,可通过Windows API直接发送窗口最大化消息:

from flask import Flask, send_from_directory
import threading
import webview
import os
import win32gui
import win32con

# ... 你的Flask代码 ...

def maximize_window():
    # 根据窗口标题获取句柄
    hwnd = win32gui.FindWindow(None, 'My React App')
    if hwnd:
        # 发送最大化指令
        win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)

if __name__ == '__main__':
    # 启动Flask线程
    flask_thread = threading.Thread(target=app.run, daemon=True)
    flask_thread.start()

    webview.create_window('My React App', url='http://127.0.0.1:5000')
    # 启动webview时调用最大化函数
    webview.start(maximize_window)

内容的提问来源于stack exchange,提问作者Arad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 21:00:19