pywebview全屏模式下实现程序退出

本文介绍如何使用Python的PyWebview库创建一个全屏应用,并通过前端JavaScript调用自定义API实现窗口关闭。教程包括了Flask设置、SQLite数据库查询和前端HTML交互的详细代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用pywebview以全屏模式启动程序后是没有窗口边框的, 当然也就没有关闭按钮了, 可以在前端的页面中画个按钮, 通过js调用自定义的api方法, 参考stackoverflow上的问题:

https://stackoverflow.com/questions/65279193/how-to-close-pywebview-window-from-javascript-using-pywebview-api

直接上代码吧, 看注释

import sqlite3
import webview
from flask import Flask, render_template

app = Flask(__name__)

conn = sqlite3.connect('data.db', check_same_thread=False)
c = conn.cursor()


@app.route('/')
def index():
    # 随机抽题
    data = []
    cursor = c.execute('select * from tiku order by random() limit 2')
    # cursor = c.execute('select * from tiku where id = 62 or id = 67')
    for row in cursor:
        data.append({
            'id': row[0],
            'title': row[1],
            'answer': row[2]
        })
    return render_template('index.html', data=data)


# 定义要传给前端js调用的api类定义, 这里定义了内部属性_window和set_window()方法来传递要操作的webview中的window对象
class Api:
    def __init__(self):
        self._window = None

    def set_window(self, window):
        self._window = window

    def quit(self):
        self._window.destroy()


def start_app():
    api = Api()
    window = webview.create_window(
        title='抽题程序',
        url=app,
        confirm_close=True,
        fullscreen=True,
        js_api=api,
    )
    api.set_window(window)

    cn = {
        'global.quitConfirmation': u'确定关闭?'
    }

    webview.start(localization=cn, debug=True, gui='cef')


if __name__ == '__main__':
    # app.run(port=8000, debug=True)
    start_app()

前端调用

// 调用pywebview的api
$("#exit").click(function () {
      pywebview.api.quit();
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DexterLien

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值