用pywebview以全屏模式启动程序后是没有窗口边框的, 当然也就没有关闭按钮了, 可以在前端的页面中画个按钮, 通过js调用自定义的api方法, 参考stackoverflow上的问题:
直接上代码吧, 看注释
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();
})